パイプを介してsedにどのように接続しますか?

パイプを介してsedにどのように接続しますか?

あるファイルの1行を印刷して別のファイルの行を置き換えるための入力として使用したいと思います。

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

可能ですか?

ベストアンサー1

私はコマンドの標準入力読み取りをサポートするsedの実装を知りませんが、cGNU sedではr擬似ファイル名と一緒にコマンドを使用して元の行を/dev/stdin削除dできます。

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

または-eチェーン式をより簡潔に使用してください。

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

中かっこはコマンドをグループ化してrdそのアドレスに対してすべて実行されるようにします12。引数の一部として解析されるので、12{r /dev/stdin; d;}単に使用することはできません。; d;}r

おすすめ記事