Bash에서 키워드 뒤에 문자열을 파일의 한 줄에 삽입하는 방법

Aug 20 2020

몇 줄이있는 파일이 있습니다.

Lines.txt

value1
value2
value3

그리고 파일의 줄을 키워드 뒤에 다른 파일에 추가하고 싶습니다.

AnotherFile.txt

NotTheKeyWord SomeOtherStuff SomeOtherStuff
NotTheKeyWord THEKEYWORD SomeOtherStuff SomeOtherStuff

필요한 것이 있다고 생각 sed하지만 줄 중간에 텍스트를 삽입하는 방법을 파악하는 데 문제가 있습니다.

그리고 나는 다음의 결과를 원합니다.

AnotherFile.txt

NotTheKeyWord SomeOtherStuff SomeOtherStuff
NotTheKeyWord THEKEYWORD value1 value2 value3 SomeOtherStuff SomeOtherStuff

답변

1 0stone0 Aug 20 2020 at 21:19

순수한 sed 솔루션 :

sed -r "s:(THEKEYWORD):\1 $(sed ':a;N;$!ba;s/\n/ /g' test.txt) :g" insert.txt

어디;

  • test.txt삽입 할 값이며 $(sed ':a;N;$!ba;s/\n/ /g' test.txt)파일에서 줄 바꿈을 제거하므로 같은 줄 에 삽입 할 수 있습니다.
  • insert.txtTHEKEYWORD존재 하는 텍스트 파일

파일을 교체하려면 -i옵션을 사용하십시오 .

sed -i -r "s:(THEKEYWORD):\1 $(gsed ':a;N;$!ba;s/\n/ /g' test.txt) :g" insert.txt

@KamilCuk가 지적했듯이 using을 사용하여 paste -sd ' ' test.txt줄 바꿈을 제거하고 파일을 삽입 할 수 있습니다.

sed -r "s:(THEKEYWORD):\1 $(paste -sd ' ' test.txt) :g" insert.txt

터미널 출력 + sed 버전