Почему это совмещение регулярных выражений?

Недавно я начал изучать sed . я сделал

 $seq 10 | sed '/[^049]/d' 

я ожидал

 4 9 10 

как выход. Но я получил

 4 9 

Где я ошибаюсь в понимании этого регулярного выражения?

  • Поиск в определенном столбце для шаблона и вывода всей строки
  • извлекать часть текста из всех совпадающих строк
  • Цифры с нулевым заполнением до 2 цифр с помощью sed
  • Выделите сегодня в Mac
  • Почему пустая выгрузка этого `sed ... << END_SED | вырезать ... `?
  • Используйте команду sed, чтобы проверить, существует ли конкретная строка, если нет, добавьте ее
  • Извлечение строк из файла в зависимости от других строк
  • Дата изменения «29 июля 2011 года» на «20110729»
  • 2 Solutions collect form web for “Почему это совмещение регулярных выражений?”

    1 в количестве 10 соответствует [^049] поэтому он удален.

    Если вы действительно хотите показывать строки, содержащие «0», «4» или «9», вот как это сделать:

     seq 10 | sed -n '/[049]/p' 

    Параметр -n инструктирует sed не печатать строки. Команда p указывает sed на печать строк, соответствующих /regex/

    Кроме того, вы всегда можете использовать grep 🙂

     seq 10 | grep -E "[049]" 
    Linux и Unix - лучшая ОС в мире.