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.txt
THEKEYWORD
존재 하는 텍스트 파일
파일을 교체하려면 -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 버전