![](/img/trans.png)
[英]Insert string/source command after #!/bin/bash line in a bash file
[英]How to insert a string into a line in a file after a key word in bash
我有一个包含几行的文件。
线条.txt
value1
value2
value3
而我想把append这个文件中的行放到另一个文件的某个关键字之后。
另一个文件.txt
NotTheKeyWord SomeOtherStuff SomeOtherStuff
NotTheKeyWord THEKEYWORD SomeOtherStuff SomeOtherStuff
我认为sed
有我需要的东西,但我在弄清楚如何将文本插入行的中间时遇到问题。
我想要的结果是:
另一个文件.txt
NotTheKeyWord SomeOtherStuff SomeOtherStuff
NotTheKeyWord THEKEYWORD value1 value2 value3 SomeOtherStuff SomeOtherStuff
纯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 指出的那样,使用paste -sd ' ' test.txt
可用于删除换行符并插入文件;
sed -r "s:(THEKEYWORD):\1 $(paste -sd ' ' test.txt) :g" insert.txt
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.