在特定文本后将文本插入文件

时间:2014-08-28 19:05:18

标签: bash shell

我想在特定文本后的下一行中将输出插入到文件中。

在我的输出(Text1.txt)中,我有不同的域名:

hxxp://example1.com
hxxp://example2.com

我想将这些行插入另一个文本文件(Text2.txt)后面的文字" URL找到" (注意:我不知道行号)。

bla
bla
bla
URLs found
hxxp://example1.com
hxxp://example2.com
bla
bla

我该怎么做?

2 个答案:

答案 0 :(得分:4)

您可以使用sed执行此操作:

sed -i '/URLs found/r Text1.txt' Text2.txt

匹配模式时,插入Text1.txt的内容。 -i开关表示sed就地编辑文件。

或者,您可以在awk中执行相同的操作:

awk 'NR==FNR{a[n++]=$0;next} 1; /URLs found/{for (i=0;i<n;++i) print a[i]}' Text1.txt Text2.txt > tmp && mv tmp Text2.txt

将Text1.txt中的所有行读入数组。 1;表示打印Text2.txt中的每一行。匹配模式时,也会打印数组的内容。

答案 1 :(得分:3)

sed让它变得非常简单:

sed -i '/URLs found/ r Text1.txt' Text2.txt