문서 내용:
# 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