質問があります。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
他のすべての行も似ています。