![在模式第一次出现后将文件插入到另一个文件中](https://linux22.com/image/25837/%E5%9C%A8%E6%A8%A1%E5%BC%8F%E7%AC%AC%E4%B8%80%E6%AC%A1%E5%87%BA%E7%8E%B0%E5%90%8E%E5%B0%86%E6%96%87%E4%BB%B6%E6%8F%92%E5%85%A5%E5%88%B0%E5%8F%A6%E4%B8%80%E4%B8%AA%E6%96%87%E4%BB%B6%E4%B8%AD.png)
我想在匹配的 PATTERN 之后将 file1 的内容插入到 file2 中。我只想在第一次出现模式后才执行此操作。
我想知道根据我的需要需要对以下命令进行修改。
sed -i "/PATTERN/r file1" file2
答案1
sed '/PATTERN/{
r file1
:a
n
ba
}' file2
:a
, n
,ba
只是一个循环,打印出PATTERN之后到最后的整个文件内容。请注意,这 6 行只是一个命令,但需要换行符来分隔r
,:
和后的下一个 sed 命令b
。
附加信息来自info sed
:
`n'
If auto-print is not disabled, print the pattern space, then,
regardless, replace the pattern space with the next line of input.
If there is no more input then `sed' exits without processing any
more commands.
`: LABEL'
[No addresses allowed.]
Specify the location of LABEL for branch commands. In all other
respects, a no-op.
`b LABEL'
Unconditionally branch to LABEL. The LABEL may be omitted, in
which case the next cycle is started.