在模式第一次出现后将文件插入到另一个文件中

在模式第一次出现后将文件插入到另一个文件中

我想在匹配的 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.

相关内容