我知道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
无需使用临时文件。 这可能吗?
你可以
从/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