从文件内部的文本添加到另一个文件中的行匹配上方

问题描述 投票:2回答:2

我有一个文件File1.txt,其中包含以下内容:

abc
def
ghi

我还有另一个文件File2.txt,其中包含以下内容:

123
456
789

我想将文件1的内容添加到789以上以提供:

123
456
abc
def
ghi
789

最终使用sed或awk。我在使用过的地方尝试了一种解决方法:

file1="$(cat File1.txt)"
sed -i "/^789/i $file1 " File2.txt

但是,这无法按预期工作。任何帮助将不胜感激,谢谢您的专业知识。

awk sed
2个回答
2
投票

使用GNU sed执行cat

sed '/^789$/e cat file1' file2

输出:

123456abc定义吉789

0
投票

[在每个UNIX盒的任何外壳中的任何awk中,对于789的任何值:

$ awk 'NR==FNR{new=new $0 ORS; next} $0=="789"{printf "%s", new} 1' file1 file2
123
456
abc
def
ghi
789

唯一的警告是,file1不能太大而无法容纳在内存中。

© www.soinside.com 2019 - 2024. All rights reserved.