![sed를 사용하여 일치 시 파일 내용을 삽입하는 방법 - 첫 번째 발생만](https://linux55.com/image/90602/sed%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EC%9D%BC%EC%B9%98%20%EC%8B%9C%20%ED%8C%8C%EC%9D%BC%20%EB%82%B4%EC%9A%A9%EC%9D%84%20%EC%82%BD%EC%9E%85%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%20-%20%EC%B2%AB%20%EB%B2%88%EC%A7%B8%20%EB%B0%9C%EC%83%9D%EB%A7%8C.png)
문서 내용:
# 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