正则表达式 - 在第一次匹配后追加文件内容
regex - append file contents after first match
假设我有以下几种文件:
file1.txt
:
a a c
b b c
c c c
d d c
e e c
a a c
b b c
c c c
d d c
e e c
file2.txt
:
—————
—————
—————
我如何从 file2.txt
中获取内容,以便我最终得到 file1.txt
表示:
a a c
b b c
c c c
—————
—————
—————
d d c
e e c
a a c
b b c
c c c
d d c
e e c
...不只是在第 3 行之后添加内容(第一行 c c c
)。
使用GNU sed
(命令需要分布在多行):
sed '0,/c c c/ {
/c c c/r file2.txt
}' file1.txt
a a c
b b c
c c c
—————
—————
—————
d d c
e e c
a a c
b b c
c c c
d d c
e e c
awk 'NR==FNR{buf = buf [=10=] RS;next} {print} /c c c/ && !done{ printf "%s", buf; done=1 }' file2.txt file1.txt
假设我有以下几种文件:
file1.txt
:
a a c
b b c
c c c
d d c
e e c
a a c
b b c
c c c
d d c
e e c
file2.txt
:
—————
—————
—————
我如何从 file2.txt
中获取内容,以便我最终得到 file1.txt
表示:
a a c
b b c
c c c
—————
—————
—————
d d c
e e c
a a c
b b c
c c c
d d c
e e c
...不只是在第 3 行之后添加内容(第一行 c c c
)。
使用GNU sed
(命令需要分布在多行):
sed '0,/c c c/ {
/c c c/r file2.txt
}' file1.txt
a a c
b b c
c c c
—————
—————
—————
d d c
e e c
a a c
b b c
c c c
d d c
e e c
awk 'NR==FNR{buf = buf [=10=] RS;next} {print} /c c c/ && !done{ printf "%s", buf; done=1 }' file2.txt file1.txt