我正在寻找一种优雅的方法,用从第 2 行开始的 file2 的所有行替换 ASCII-file1 中的一行行。 file1 中要替换的行封装在空行 nr.2 和 nr.3 中。
file1 中 block 的第一行和最后一行的编号对于一堆文件是固定的,但需要更通用的解决方案。
文件1:
first
text
block
#blank line
second textblock
#blank line
third
text
block
#blank line
文件2:
first line
all
the
other
lines
替换后的预期文件1:
first
text
block
#blank line
second textblock
#blank line
all
the
other
lines
#blank line
最佳答案
awk
的一种方式:
$ match="second textblock"
$ awk 'NR==FNR&&!p;$0~m{print p;p=1};NR>FNR&&FNR>1' m="$match" file1 file2
first
text
block
#blank line
second textblock
all #blank line
the
other
lines
#blank line
关于regex - 用其他文件中的行替换行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17167627/