sed 附加从标准输出获取的文本



我知道sed可以通过几种不同的方式附加文本:

  1. 将字符串追加NEW_TEXT

    sed -i '/PATTERN/ a NEW_TEXT' file
    
  2. 要附加文件file_with_new_text的内容:

    sed -i '/PATTERN/ r file_with_new_text' file
    

但是,无论如何都可以附加通过 stdout 管道传输到sed的文本吗? 我希望获得相当于:

# XXX,YYY,ZZZ are line numbers
# The following appends lines XXX-YYY in file1
# after line ZZZ in file2.
sed 'XXX,YYY p' file1 > /tmp/file
sed -i 'ZZZ r /tmp/file' file2

无需使用临时文件。 这可能吗?

你可以

/dev/stdin阅读。显然,每个 sed 进程只能工作一次。

例:

$ cat file1
this is text from file1
etc
$ cat file2
Hello world from file2
$ sed -n '1p' file1 | sed -i '$ r /dev/stdin' file2
$ cat file2
Hello world from file2
this is text from file1

您可以将重定向运算符与r命令一起使用:

sed -i '/ZZZ/r '<(sed -n '1p' file1) file2

相关内容

  • 没有找到相关文章

最新更新