Unix Sed는 작은따옴표를 이스케이프 처리합니다.

Unix Sed는 작은따옴표를 이스케이프 처리합니다.

내 파일 데이터는 다음과 같습니다

  1. bill johnson
  2. robert dylan
  3. neil o'bryan

요구 사항은 성을 추출하고 @mail.com을 추가하는 것입니다. 다음 명령을 사용했습니다.

cut -d"|" -f2 emp.lst | sed 's/\([a-z][a-z]*\) \([a-z][a-z]*\)/\[email protected]/'

-- 파일에서 두 번째 필드(전체 이름)를 가져오는 Cut 명령 -- 이름과 성을 분리하고 이메일을성에 할당하는 Sed

이름을 제외한 모든 것이 잘 작동하며 neil o'bryan아래는 내가 얻은 결과입니다.

  1. [email protected]
  2. [email protected]
  3. [email protected]'bryan

예상대로 작은따옴표로 이름을 얻는 방법을 알려주세요. 그게 다야[이메일 보호됨]

답변1

이메일 주소 o'brian에 있어야 한다고 가정하면 원치 않는 문자를 제거하기 위해 파이프라인에 단계를 추가하기만 하면 됩니다.obriantr

cut -d "|" -f2 emp.lst |
tr -d "'" |
sed 's/\([a-z][a-z]*\) \([a-z][a-z]*\)/\[email protected]/'

제거하려는 다른 문자에 대해서도 동일한 작업을 수행하거나 다른 문자로 변환할 수 있습니다.

cut -d "|" -f2 emp.lst |
tr -d "'" |
tr 'åäöé' 'aaoe' |
sed 's/\([a-z][a-z]*\) \([a-z][a-z]*\)/\[email protected]/'

주소가 아포스트로피와 함께 있어야 하는 경우 정규식에 추가하면 됩니다.o'[email protected]

cut -d "|" -f2 emp.lst |
sed "s/\([a-z][a-z]*\) \([a-z]['a-z]*\)/\[email protected]/"

관련 정보