問題の変数に特定の文字を検索と置換:私は、変数sedの
例に保存されている同じ文字列内に別の文字を付加したい文字の変数を持っています。 "[blahblahblah]" ---> "\ [blahblahblah \]"
現在のソリューション:現在、私は、各ステップは、1つのブラケットを攻撃、私は2つのステップで何をしたい達成
例。
temp=[blahblahblah]
firstEscaped=$(echo $temp | sed s#'\['#'\\['#g)
fullyEscaped=$(echo $firstEscaped | sed s#'\]'#'\\]'#g)
これは私が欲しい結果を与えるが、私はcapturing groupsを使用して1行でこれを達成することができるような気がします。私はちょうど運がなかったし、私は燃えてきている。私がやっていることではなく、角括弧で囲まれたテキストを抽出したいと思っている例がほとんどです。 Thisは私の最近の役に立たない試みです。何か案は?
あなたは単語の分割とワイルドカード拡大を防ぐために、二重引用符 '$のtemp'に必要です。 '[]'はシェルワイルドカードなので、予期せず展開される可能性があることに注意してください。 –
はい、そうです。これはOPからコピーされ、これを修正します。 – CWLiu
私はあなたが使用している正規表現が拡張フォーマットであることに気付きました( '|'を使って別のものを区切ります)。これは 'sed -r'(GNU sed)や' sed -E'(BSD sed)を使用しない限り一般的にはうまくいかないでしょう。おそらく大括弧の式を使うほうがいいでしょう(大括弧を含む括弧の式は複雑ですが)。 'sed 's/[] []/\\&/ g''は動作するはずです。 –