文字のいずれかに「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
答え2
$ echo 6.5G 66.5m | sed -e 's/[[:space:]].*[mM]//g'
6.5G
「m」と「M」はパターンを形成する。動作しないバージョンでは、「m」の後に「M」が続くものを探します。
答え3
削除したい場合は、以下を試してください。
[root@connect ~]# echo 6.5M 66.5m | sed -e 's/m//g' | sed -e 's/M//g'
6.5 66.5
答え4
こうしてみてください。 「m」または「M」を含む行が削除されます。
echo 6.5G 66.5m | sed "/[mM]/d"