文字列から「悪い」文字を削除しようとしていますが、正しく動作させることができないようです。
私の現在のコマンド: e と l を削除しようとしていた場合
sed -e "s/e|l//g" ...
これは期待どおりに機能しますが、
sed -e "s/e//g"
だから私の主な質問は、正規表現を使用して複数の独立した文字列を一致させて置き換えるにはどうすればよいですか?
特定の例として、文字のインスタンスを探している場合、e
またはl
文字クラスが必要な場合。言う:
sed 's/[el]//g'
コメントで述べたように、正規表現を使用しないだけで、match and replace multiple independent strings using regex
次のことができます。match and replace multiple independent strings
awk -v strings="foo,bar" '
BEGIN {
split(strings,tmp,/,/)
for (i=1;i in tmp; i++)
stringA[tmp[i]]
}
{
for (string in stringA) {
if ( start = index($0,string) ) {
$0 = substr($0,1,start-1) "some other string" substr($0,start+length(string)+1)
}
}
print
}
' file
テストされていませんが、上記は文字列「foo」および/または「bar」をテキスト「some other string」に置き換える必要があります。