Подключение Ethernet не работает на Ubuntu 14.04 (с двойной загрузкой Windows 10)

Ваша команда sed

s/[m][M]//g

Это удалит только строку mM из его ввода, потому что вы попросили сопоставить

  • что-либо в наборе m , а затем
  • что-либо в наборе M .

Вы, вероятно, хотели вместо этого написать [Мм] . Вы можете получить тот же эффект, добавив параметр / i к команде s , хотя:

s/m//ig

Теперь это удалит все верхние или нижние регистры m s:

$ echo 6.5G 66.5m | sed -e s/m//ig
6.5G 66.5

Ваш вопрос касается того, как удалить целые слова, содержащие эту букву. Для этого нам нужно сопоставить любые непробельные символы до или после. [^] соответствует непробельному символу, а [^] * соответствует нулю или нескольким непробельным символам, поэтому мы хотим

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
30.08.2015, 02:08
0 ответов

Теги

Похожие вопросы