Sed가 예상대로 작동하지 않습니다.

Sed가 예상대로 작동하지 않습니다.

sed그럴 거라고 이해 해요

  1. 해당 가능모두1행에 대한 설명, 그다음 2행에 대한 설명...
  2. 이전 지침은 변경될 수 있습니다.패턴 공간따라서 다음 명령어는 수정된 패턴 공간(원본 텍스트 대신)에서 실행됩니다.

예는 다음과 같습니다:

샘플 .txt 파일

pig cow

주문하다

sed -e 's/pig/cow/; s/cow/horse/;' sample.txt

예상 출력

horse horse

실제 출력

horse cow

내 예상 결과의 이유는 다음과 같습니다.

  1. 첫 번째 명령어가 대체됩니다.돼지그리고젖소내부에패턴 공간
  2. 두 번째 명령어는 2로 대체됩니다.돼지2로에 있습니다패턴 공간

답변1

기본적으로 교체 명령은 s교체만 수행합니다.첫 번째다음과 같이 닫는 구분 기호를 바꾼 후 특정 플래그를 사용하지 않는 한 일치합니다.

sed -e 's/pig/cow/g; s/cow/horse/g' <sample.txt

g플래그는 sed정규식과 겹치지 않는 일치 항목에 대해 가능한 한 많이 교체를 반복하도록 지시합니다.

이 명령에 대한 또 다른 플래그 세트 s(여기서는 적용되지 않지만 알아두면 유용할 수 있음)는 아래와 같이 패턴의 n번째 발생을 대체하는 데 선택적으로 사용할 수 있는 한 자리 플래그입니다.

sed -e 's/a/A/3'

위의 코드는 각 줄의 세 번째 입력을 a1로 변경합니다.A

자세한 내용은 sed시스템 설명서( )를 참조하십시오.man sed

관련 정보