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

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

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

я ожидал

 4 9 10 

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

 4 9 

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

  • Знаки sed «e» и «g» не работают вместе
  • Как извлечь первый код base64 из файла?
  • sed - найти строку из 4 чисел с предшествующим символом и добавить символ
  • использование sed для замены шаблона с помощью хэш-значений
  • как grep текст до следующего пространства?
  • Добавить текст после определенной строки
  • Удаление строк, содержащих указанную строку в разных файлах
  • Переименование файлов с номерами в соответствующие 1-n числа в порядке
  • 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 - лучшая ОС в мире.