我知道sed
可以通过几种不同的方式附加文字:
追加字符串NEW_TEXT
:
sed -i '/PATTERN/ a NEW_TEXT' file
追加文件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
无需使用临时文件。这可能吗?
答案 0 :(得分: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
答案 1 :(得分:3)
您可以使用r
命令重定向运算符:
sed -i '/ZZZ/r '<(sed -n '1p' file1) file2