Sed

如何通過管道傳輸到 sed?

  • July 31, 2022

我想從一個文件中列印一行並將其用作另一個文件中行替換的輸入。

sed -n '12p' FILE1 | sed -i '12c\ STDIN' FILE2

這可能嗎?

我不知道任何支持從標準輸入讀取c命令的 sed 實現,但在 GNU sed 中,您可以使用r帶有 pseudo-filename 的命令/dev/stdin,然後d刪除原始行:

... | sed -i '12{
r /dev/stdin
d
}' FILE2

或者,更緊湊地使用-eto 連結表達式

... | sed -i -e '12{r /dev/stdin' -e 'd;}' FILE2

大括號將randd命令分組,以便它們都針對 address 執行12。您不能簡單地使用12{r /dev/stdin; d;},因為; d;}將被解析為r.

引用自:https://unix.stackexchange.com/questions/711852