1

文字列から「悪い」文字を削除しようとしていますが、正しく動作させることができないようです。

私の現在のコマンド: e と l を削除しようとしていた場合

sed -e "s/e|l//g" ...

これは期待どおりに機能しますが、

sed -e "s/e//g"

だから私の主な質問は、正規表現を使用して複数の独立した文字列を一致させて置き換えるにはどうすればよいですか?

4

2 に答える 2

3

特定の例として、文字のインスタンスを探している場合、eまたはl文字クラスが必要な場合。言う:

sed 's/[el]//g'
于 2013-09-21T05:28:59.900 に答える
0

コメントで述べたように、正規表現を使用しないだけで、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」に置き換える必要があります。

于 2013-09-21T14:08:48.887 に答える