私が読んでいるhttps://stackoverflow.com/a/10010364/156458、-e
sedオプションに関する質問があります。
私が正しい場合は、-e
インラインsedコマンドの前に使用されます。ただし、.sedなしでインラインsedコマンドを指定できます-e
。たとえば、次の2つが私と同じように機能します。
$ echo foo | sed 's/foo/bar/g'
bar
$ echo foo | sed -e 's/foo/bar/g'
bar
-f
sedスクリプトを指定する必要はありません。いつそれが必要ですか-e
?最初に提供されたリンクの特定の場合になぜ必要なのですか-e
?
ありがとうございます。
答え1
man sed
これは sed() のマニュアルページに返信されています。
-e script
、--expression=script
実行するコマンドにスクリプトを追加します。
そして
no
-e
、--expression
[...]オプションが指定されている場合、オプションではなく最初の引数がsed
解釈されるスクリプトとして使用されます。残りのすべての引数は入力ファイルの名前です。入力ファイルが指定されていない場合は、標準入力を読み込みます。
したがって、パラメータが1つしかない場合はスクリプトsed
として処理されます。sed
複数のパラメータがある場合、または-e
を使用して、どのパラメータがスクリプトであるかを確認--expression
する必要があります。sed
特定の例では、2つの選択肢は同義語です。
答え2
複数の式をコードに渡す場合は、通常-e
(with)を使用しようとします。-f
sed
次の式-e
と次のファイルの内容は(改行文字を使用して)連結され、スクリプトが-f
形成されます。sed
リテラル式のみを渡したい場合は、それを省略して-e
その式をオプションではなく最初の引数として渡すことができますsed
。
sed -e s/foo/bar/ -f file.sed -e 'a\' -e foo
実行と同じ:
sed 's/foo/bar/
content of file.sed
a\
foo'
w
//コマンドの背後にある実装によっては、より多くの場所などのいくつかの場所があるため、区切られたコマンドは使用できませんr
。 1行のコマンド(複数行のコマンド入力を厄介にするこのようなシェル、または複数行のコマンド入力を厄介にするこのようなシェルに役立ちます)#
;
a
-e
sed
csh
ksh
編集するそれらを)。
次の場合:
sed 's/foo/bar/g'
そして
sed -e 's/foo/bar/g'
まったく違いはありません。