env varのものをSEDに置き換えることはできますか?env varを持つファイルなしでSEDを使用するには?
$ a='aoeua'
$ sed '[email protected]@[email protected]' <$a
bash: aoeua: No such file or directory
$ env|grep "SHELL"
SHELL=/bin/bash
私が欲しいの出力はo
と'aoeua'
に各a
を交換
ooeuo
です。
env varのものをSEDに置き換えることはできますか?env varを持つファイルなしでSEDを使用するには?
$ a='aoeua'
$ sed '[email protected]@[email protected]' <$a
bash: aoeua: No such file or directory
$ env|grep "SHELL"
SHELL=/bin/bash
私が欲しいの出力はo
と'aoeua'
に各a
を交換
ooeuo
です。
使用すると、エコー:bashで
$ echo "$a" | sed '[email protected]@[email protected]'
をあなたも${parameter/pattern/string}
構文を持つ単純な置換を行うことができます。例:
$ v='aoeua'
$ echo ${v/a/o}
ooeua
これは、パターンの最初のオカレンスに置き換わることに注意してください。
**グローバル置換**では 'echo $ {v // a/o}'を実行できます。 –
@JaypalSinghありがとう!マニュアルページにそれについての言及はありませんが、動作するようです。 –
さて、それはあまりよく書かれていません。 '$ {parameter/pattern/string}パターンは、パス名展開と同じようにパターンを生成するように展開されます。パラメータが展開され、その値に対するパターンの最長一致がstringに置き換えられます。 **パターンが/で始まる場合、パターンのすべての一致が文字列**に置き換えられます。通常は最初の試合だけが交換されます。 ' –
これはあなたのために働くかもしれない:
a='aoeua'
sed '[email protected]@[email protected]' <<<$a
ooeuo
<<<$a
は、私は受け入れ答えに基づいて、あなたが探しているものの出力を説明するためにあなたの質問を編集したhere-string
です。最初の質問は、*働かなかったことを示してくれましたが、あなたが何をしようとしているかを明確に伝えていませんでした。 (ローレンスは正しく推測しました) –