sed追加从stdout获得的文本

jay*_*flo 4 bash sed

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

  1. 附加字符串NEW_TEXT:

    sed -i '/PATTERN/ a NEW_TEXT' file
    
    Run Code Online (Sandbox Code Playgroud)
  2. 附加文件内容file_with_new_text:

    sed -i '/PATTERN/ r file_with_new_text' file
    
    Run Code Online (Sandbox Code Playgroud)

但是,无论如何要sed通过stdout 追加文本管道吗?我希望得到相当于:

# 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
Run Code Online (Sandbox Code Playgroud)

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

tha*_*guy 6

你可以阅读/dev/stdin.显然,这只能在每个进程中使用一次.

例:

$ 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
Run Code Online (Sandbox Code Playgroud)

  • 也可以写入标准输出:`1w/dev/stdout` (2认同)