sed 또는 awk를 사용하여 .txt 파일에서 몇 문자를 제외한 모든 줄에 문자열을 추가하는 방법

sed 또는 awk를 사용하여 .txt 파일에서 몇 문자를 제외한 모든 줄에 문자열을 추가하는 방법

xid.txt다음과 같은 텍스트 파일이 있습니다.

xid: SC48028 id: artf398444
xid: indv1000 id: indv24519
xid: SC32173 id: artf398402
xid: SC21033 id: artf398372
xid: 1001 id: tracker4868
xid: wiki1000 id: wiki10709
xid: proj1234 id: proj12556

'SC48028', 'SC32173'...등 앞에 'PT_' 문자열을 추가해야 합니다. 문자열 "SC..."는 "AC..." 또는 "DL.." 등 어떤 조합으로도 시작할 수 있습니다.

원하는 출력:

xid: PT_SC48028 id: artf398444
xid: indv1000 id: indv24519
xid: PT_SC32173 id: artf398402
xid: PT_SC21033 id: artf398372
xid: 1001 id: tracker4868
xid: wiki1000 id: wiki10709
xid: proj1234 id: proj12556

위 출력이 표시되면 'i', 'p', 'w' 및 'numeric'으로 시작하는 문자열 앞에 'PT_'를 삽입하면 안 됩니다. 내 요구 사항을 충족하기 위해 sed에서 삽입/추가를 사용하여 몇 가지 기본 명령을 시도했습니다.

답변1

그리고:

awk '$2~/^[A-Z][A-Z]/{ $2="PT_"$2 }1' xid.txt

산출:

xid: PT_SC48028 id: artf398444
xid: indv1000 id: indv24519
xid: PT_SC32173 id: artf398402
xid: PT_SC21033 id: artf398372
xid: 1001 id: tracker4868
xid: wiki1000 id: wiki10709
xid: proj1234 id: proj12556

  • $2~/^[A-Z][A-Z]/- 두 번째 필드가 2개의 대문자로 시작하는 경우

또는sed방법:

sed -i 's/^\(xid:[[:space:]]*\)\([A-Z]\{2\}[^[:space:]]*\)/\1PT_\2/' xid.txt

답변2

sed 옵션

sed -i -e 's/[A-Z][A-Z]/PT_&/' file

어디

  • -i제자리에서 편집
  • -e주문 실행

관련 정보