sed를 사용하여 일치 시 파일 내용을 삽입하는 방법 - 첫 번째 발생만

sed를 사용하여 일치 시 파일 내용을 삽입하는 방법 - 첫 번째 발생만

문서 내용:

# cat file.txt 
-----
MATCH
-----
MATCH
-----
MATCH
-----

# cat text.txt 
add this text file
before first match

sed 명령:

# sed '0,/MATCH/r text.txt' file.txt
-----
add this text file
before first match
MATCH
add this text file
before first match
-----
MATCH
-----
MATCH
-----

# sed '0,/MATCH/i prependme once' file.txt
prependme once
-----
prependme once
MATCH
-----
MATCH
-----
MATCH
-----

나는 다음과 같은 출력을 얻기 위해 어떻게 든 이러한 명령을 결합하려고합니다.

-----
add this text file
before first match
MATCH
-----
MATCH
-----
MATCH
-----

답변1

...을 사용 하여 ed교체sed

ed -s << EOF file.txt
0,/MATCH/-1 r text.txt
,p
q
EOF

아니면 한 줄로

printf '0,/MATCH/-1 r text.txt\n,p\nq' | ed -s file.txt
-----
add this text file
before first match
MATCH
-----
MATCH
-----
MATCH
-----

( 내부 편집 ,p으로 대체됨)w

답변2

이 시도

$ sed '0,/MATCH/ s/MATCH/add this text file\nbefore first match\nMATCH/' file.txt

또는 다른 sed 표현식을 출력으로 사용하십시오.

$ sed '0,/MATCH/i prependme once' file.txt | sed 1d

파일 내용을 추가하는 데 사용됩니다.

$ sed -e '0,/MATCH/s/MATCH/$(cat text.txt)\nMATCH/' file.txt

-----일치하는 문자열로 사용할 수 있는 다른 솔루션

$ sed '0,/-----/r text.txt' file.txt

관련 정보