sed s コマンド & e フラグ: `echo '$-' | sed 's/-//e'` は以下を提供します: `sh:$: コマンドが見つかりません`

sed s コマンド & e フラグ: `echo '$-' | sed 's/-//e'` は以下を提供します: `sh:$: コマンドが見つかりません`

質問があります。sed、使用するときS'(検索と置換コマンド)と'金利'フラグ(例:

sed 's/.../.../e'

$問題は、標準入力の文字が(混乱しているようです。)


私の最初の出会いこここれで、次のように要約されます。

echo '$-' | sed 's/x//e'               # works when pattern is NOT matched
$-

echo '$-' | sed 's/-//e'               # fails when pattern is matched: gags on $
sh: $: command not found

echo '-' | sed 's/-//e'                # works when $ isn't present

echo '-(' | sed 's/-//e'               # Also fails when '(' or ')' are found
sh: -c: line 1: syntax error: unexpected end of file

echo '(' | sed 's/-//e'                # But works with this
(

echo '$-' | sed 's/-/echo xx/e'        # also fails
sh: xx: command not found

echo '$-' | sed 's/\(-\)/echo '\1'/e'  # also fails
sh: 1: command not found

これは何ですか?GNUマニュアル説明する:

3.3秒コマンド

...

■コマンドの後には、次のフラグのうち0個以上が続くことがあります。

...

金利

このコマンドを使用すると、シェルコマンドの入力をパターンスペースにパイプできます。置換が行われると、パターン空間内のコマンドが実行され、その出力がパターン空間を置き換えます。末尾の改行は抑制されます。実行するコマンドに NUL 文字が含まれている場合、結果は定義されません。これはGNU sed拡張です。


bash --version
GNU bash, version 5.0.3(1)-release (x86_64-pc-linux-gnu)

sed --version
sed (GNU sed) 4.7
Packaged by Debian

私は何を逃したか間違っていますか?

ベストアンサー1

走る

echo '$-' | sed 's/-//e'

-から削除し$-てそのままにすると、$結果はシェルコマンドで実行されます/e

$コマンドラインで実行してみると、結果は同じです。

sh: $: command not found

他のすべての行も似ています。

おすすめ記事