첫 번째 일치하는 줄만 sed로 교체

첫 번째 일치하는 줄만 sed로 교체

GNU 확장 없이 BSD sed를 사용하면 아래 제공된 예와 유사한 작업을 수행할 수 있지만 줄 번호 대신(실제 번호를 지정하는 대신) 패턴이 발생하는 첫 번째 줄에서 교체가 수행됩니다. ?

줄 번호 제한

가장 간단한 제한은 줄 번호입니다.
3행의 첫 번째 숫자를 제거하려면 명령 앞에 "3"을 추가하면 됩니다.

sed '3 s/[0-9][0-9]*//' <filename >newfilename

원천:http://www.grymoire.com/Unix/Sed.html#uh-26

답변1

{ sed -Ee'/[0-9]+/{s///;q;}'; cat; } <in >out

^BSD와 함께 작동해야 합니다 sed. 그러나 분명히 그렇지 않습니다.

그래서:

sed -e'/[0-9][0-9]*/{s///;:b' -e'n;bb' -e\} <in >out

...그들 중 누구와도 작동해야 합니다.

답변2

이것은 완벽하게 작동합니다.

sed '1,/abc/s/abc/xyz/' 파일.txt

다음과 같이 축약될 수 있습니다.

sed '1,/abc/s//xyz/' 파일.txt

GNU 및 BSD와 호환 가능:

sed '1,/[0-9][0-9]*/s///' <파일 이름> 새 파일 이름

관련 정보