我知道sed可以通过几种不同的方式附加文本:
附加字符串NEW_TEXT:
sed -i '/PATTERN/ a NEW_TEXT' file
Run Code Online (Sandbox Code Playgroud)附加文件内容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)
无需使用临时文件.这可能吗?
你可以阅读/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)