sed를 사용하여 패턴의 첫 번째 발생에 텍스트 추가

sed를 사용하여 패턴의 첫 번째 발생에 텍스트 추가

아래와 같은 텍스트 파일이 있다고 가정해 보겠습니다.

Hello world
types=""
Mario
types="Game"

내가 원하는 것은 type="""program"이라는 단어가 처음 나타나는 것을 찾아서 추가하는 것입니다. 다음과 같은 출력이 필요합니다.

Hello world
types="program"
Mario
types="Game"

Unix 쉘 스크립팅에서 이것을 사용해야 합니다. 내가 시도한 것은 다음과 같습니다.

sed -i '1,/types=""/s/types=""/types="program"/' filename

명령을 보면 추가가 아닌 삽입만 수행됩니다. 추가를 시도했지만 a\여전히 작동하지 않습니다.

답변1

sed줄로 대체하면 이미 의도한 대로 작동하는 것 같습니다.

$ cat t.txt
Hello world
types=""
Mario
types="Game"

$ sed '1,/types=""/s/types=""/types="program"/' t.txt

Hello world
types="program"
Mario
types="Game"

무엇을 보여주기 위해 질문을 편집하는 것이 가치가 있을 수 있습니다.명령을 실행할 때 가져옵니다 sed( -i결과가 터미널에 인쇄되는 옵션 없이).

그런데, 귀하의 범위가 1,/types=""/중복되었습니다. 다음과 같이 단순화할 수 있습니다.

sed '/types=""/s/types=""/types="program"/' t.txt

관련 정보