出力の2行目で他のコマンドをどのように実行できますか?
たとえば、echo foo | sed p
どのような出力がありますか?
foo
foo
sed 's/foo/bar/'
私はそれらのいずれかを実行して取得したいと思います。
bar
foo
ベストアンサー1
存在する
$ echo foo | sed p
foo
foo
最初のものはfoo
コマンドによって印刷されp
、2番目はパターンスペースがループの終わり(次の行を読む直前)に印刷される-n
ため、印刷されません。sed
foo
だからそれを取得するにはbar
:
$ echo foo | sed 'p;s/foo/bar/'
foo
bar
または:
$ echo foo | sed -n 'p;s/foo/bar/p'
foo
bar
bar
置換がある場合にのみ印刷します(s
置換が成功した場合はフラグ付きコマンドで)。p
bar
、を取得するには、元の元の行を取得し、foo
交換h
結果を印刷して復元します。
$ echo foo | sed 'h;s/foo/bar/p;g'
bar
foo