sed + sedパイプラインを最小限に抑え、一度にsedを完了する方法

sed + sedパイプラインを最小限に抑え、一度にsedを完了する方法

2つの異なるsedパイプを必要とせずに1つのsedコマンドで次のことを実行できますか?

sed s"/obbama/trump/" | sed s'/"//g' | sed s'/://g' 

ここで説明されている sed では、obbama という単語を trump に置き換えて、 ' ' ' と ':' 文字を削除する必要があります。

答え1

~からPOSIX sed のマニュアルページ

スクリプトは、スクリプトオペランド文字列またはオプション引数の組み合わせから取得する必要があります。-eスクリプトそして-fスクリプトファイルオプション。

最初の答え(「スクリプトオペランド文字列」)は、基本的にここの他の答え(セミコロンで区切られています)によって処理されます。

そして-e

$ sed -e "s/obbama/trump/" -e 's/"//g' -e 's/://g' 

そして-f

$ cat sed-script
s/obbama/trump/
s/"//g
s/://g
$ sed -f sed-script

ところで、より伝統的なアプローチは、例で実行された各代替ディレクティブに対して引用符の中に「s」を入れることです-e

答え2

sedsh、awk、perl、または他の言語と同様に、スクリプトで複数の文を受け入れるスクリプト言語です。セミコロン;または改行文字を使用して各sedステートメントを区切ることができます。例えば

sed 's/obbama/trump/; s/"//g; s/://g'

または

sed 's/obbama/trump/
s/"//g
s/://g'

末尾の空白文字;はオプションですが、IMOはsedスクリプトを読みやすくします。

関連情報