文字のいずれかに「m」または「M」が含まれている場合、どのように単語を削除できますか?
私はこれを試しましたが、うまくいきません。
echo 6.5G 66.5m | sed -e 's/[m][M]//g'
ベストアンサー1
あなたのsedコマンドは次のとおりです
s/[m][M]//g
mM
一致を要求したため、入力から文字列のみが削除されます。
- コレクション内のすべてのアイテム
m
、その後ろに - コレクションのすべて
M
。
あなたは文章を書きたかったかもしれません[Mm]
。ただし、コマンドにオプションを追加すると/i
同じ効果が得られますs
。
s/m//ig
これで大文字と小文字をすべて削除しますm
。
$ echo 6.5G 66.5m | sed -e s/m//ig
6.5G 66.5
あなたの質問は、その文字を含む単語全体を削除する方法を尋ねます。これを行うには、前後にスペース以外の文字を一致させる必要があります。 [^ ]
1つの空白以外の文字と一致し、[^ ]*
ゼロ個以上の空白以外の文字と一致するため、
s/[^ ]*m[^ ]*//ig
これをテストしてみてください。
$ echo 6.5G 66.5m | sed -e 's/[^ ]*m[^ ]*//ig'
6.5G
そして
$ echo Five Merry Women went fishing | sed -e 's/[^ ]*m[^ ]*//ig'
Five went fishing