文書の内容:
# 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