Sed
如何通過管道傳輸到 sed?
我想從一個文件中列印一行並將其用作另一個文件中行替換的輸入。
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
或者,更緊湊地使用
-e
to 連結表達式... | sed -i -e '12{r /dev/stdin' -e 'd;}' FILE2
大括號將
r
andd
命令分組,以便它們都針對 address 執行12
。您不能簡單地使用12{r /dev/stdin; d;}
,因為; d;}
將被解析為r
.