繁体   English   中英

如何在 bash 中的关键字后将字符串插入文件中的一行

[英]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 -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

终端 output + sed 版本

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM