我如何通过管道连接到 sed?

par*_*oid 0 sed

我想从一个文件中打印一行,并将其用作另一个文件中的行替换的输入。

sed -n '12p' FILE1 | sed -i '12c\ STDIN' FILE2
Run Code Online (Sandbox Code Playgroud)

这可能吗?

ste*_*ver 5

我不知道 sed 的任何实现都支持从命令的标准输入读取c,但在 GNU sed 中,您可以使用r带有伪文件名的命令/dev/stdin,然后d删除原始行:

... | sed -i '12{
r /dev/stdin
d
}' FILE2
Run Code Online (Sandbox Code Playgroud)

或者,更紧凑地使用-e链接表达式

... | sed -i -e '12{r /dev/stdin' -e 'd;}' FILE2
Run Code Online (Sandbox Code Playgroud)

大括号将rd命令分组,以便它们都针对该地址执行12。您不能简单地使用,12{r /dev/stdin; d;}因为; d;}将被解析为 参数的一部分r