Awk 在另一个文件的行匹配上方添加文件内部的文本

Awk 在另一个文件的行匹配上方添加文件内部的文本,awk,sed,Awk,Sed,我有一个文件File1.txt,其中包含以下内容: abc def ghi 123 456 789 我有另一个文件File2.txt,其中包含以下内容: abc def ghi 123 456 789 我想在789上面添加文件1的内容,给出: 123 456 abc def ghi 789 最终使用sed或awk。 我尝试了一种解决方法,我使用: file1="$(cat File1.txt)" sed -i "/^789/i $file1 " File2.txt 然而,这并没有达到

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

abc
def
ghi
123
456
789
我有另一个文件File2.txt,其中包含以下内容:

abc
def
ghi
123
456
789
我想在789上面添加文件1的内容,给出:

123
456
abc
def
ghi
789
最终使用sed或awk。 我尝试了一种解决方法,我使用:

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

然而,这并没有达到预期的效果。非常感谢您的帮助,谢谢您的专业知识。

使用GNU执行
cat

sed '/^789$/e cat file1' file2
输出:

123 456 abc def ghi 789 123 456 abc def ghi 789
对于任意值的
789
,在每个UNIX框的任意shell中使用任意awk:

$ awk 'NR==FNR{new=new $0 ORS; next} $0=="789"{printf "%s", new} 1' file1 file2
123
456
abc
def
ghi
789
唯一需要注意的是,
file1
不能太大以至于无法放入内存