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バージョン