我想将输出插入到文件中...在特定文本之后的下一行。
在我的输出(Text1.txt)中,我有不同的域名行:
hxxp://example1.com
hxxp://example2.com
Run Code Online (Sandbox Code Playgroud)
我想将此行插入到另一个文本文件(Text2.txt)中包含文本“URLs found”的行之后(注意:我不知道行号)。
bla
bla
bla
URLs found
hxxp://example1.com
hxxp://example2.com
bla
bla
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
您可以使用 sed 执行此操作:
sed -i '/URLs found/r Text1.txt' Text2.txt
Run Code Online (Sandbox Code Playgroud)
当模式匹配时,插入 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
Run Code Online (Sandbox Code Playgroud)
将 Text1.txt 中的所有行读入数组中。这1;意味着 Text2.txt 中的每一行都会被打印。当模式匹配时,数组的内容也会被打印。