sed +文字のいずれかに「m」または「M」が含まれている場合に単語を削除する方法

sed +文字のいずれかに「m」または「M」が含まれている場合に単語を削除する方法

文字のいずれかに「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

おすすめ記事