sedコマンドで-eの目的は何ですか?

sedコマンドで-eの目的は何ですか?

sed -eこのスイッチのドキュメントが見つかりません。簡単な交換のために文書が必要ですか?

例えば

sed 's/foo/bar/'

VS

sed -e 's/foo/bar/'

答え1

マニュアルページから:

-e script, --expression=script

    add the script to the commands to be executed

したがって、複数の-eオプションを使用してマルチパートスクリプトを作成できます。

$ sed -e "s/foo/bar/" -e "/FOO/d"

まずfooに置き換えてbarから、含まれている各行を削除しますFOO

答え2

これはあなたに役立ちます:

sed -e '/foo/i\' -e 'bar' -e '/fred/a\' -e 'barny' -e '/harry/c\' -e 'potter' file

それぞれの場合i(挿入)、a(追加)、およびc(変更)コマンドは改行文字で終了する必要があります。

;通常、コマンドはegで区切って/foo/d;/bar/d} {...egにグループ化できますが、コマンド/foo/{h;d}の場合はコマンドを区別する方法を提供します。i,a,c-e

別の方法は、シェルを使用して改行文字を挿入することです。

sed '/foo/i\bar'$'\n''/fred/a\barney'$'\n''/harry/c\potter' file

答え3

ヘルプでは、フラグの意味は次のとおりですsed-e

 -e script, --expression=script
              add the script to the commands to be executed

この出会いの後に混乱するのはあなたが初めてではありません-e。あなたの例ではとsed 's/foo/bar/'同等sed -e 's/foo/bar/'です。どちらの場合もs/foo/bar/そうです。スクリプトsedによって実行されます。 2番目のオプションはより明確ですが、これが頻繁に使用される理由ではありません-e。その理由は、-e同じタスクを実行するために複数のスクリプトを使用できるためですsed。しかし、1つのスクリプトしか使用しない場合は、なぜそれを使用するのですか?次の例では、これについて説明します。

echo "foo" | sed -e 's/foo/bar/' -e 's/bar/foo/'

「foo」が出力されます。

しかし、

echo "foo" | sed 's/foo/bar/' -e 's/bar/foo/'

sed最初のファイルはs/foo/bar/ファイル名として解釈されるため失敗します。したがって、将来の生活をより簡単にするために、-e今日このロゴを使用できます。これにより、後で.appを使用して追加のスクリプトを簡単に添付できます-e <script>

注:他の回答では、いくつかの;スクリプトが代替として提案されています。場合によっては、これは技術的に可能ですが、読み取りが非常に難しいコードにすばやくつながる可能性があるため、お勧めできません。ここの例をご覧ください。https://www.grymoire.com/Unix/Sed.html#uh-61

答え4

-eと同等のものは、--expression他の式に示されているように、複数の式を一緒に文字列で囲まない限り(共通ではない)オプションです。回答

Aside:;複数の式を順番に実行するために、同じ式で代わりに使用できます。

関連情報