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

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

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

я ожидал

  • Разделить и распечатать
  • grep все строки, начинающиеся с определенного символа, и заканчиваются другим символом
  • В чем смысл использования нескольких восклицательных знаков в sed?
  • Замените каждое нечетное или даже появление шаблона в файле
  • Удалите частичные дубликаты последовательных строк, но сохраните первый и последний
  • Ленивое регулярное выражение с использованием Bash
  •  4 9 10 

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

     4 9 

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

  • Вывод команды parse
  • Сортировка некоторых строк в файле
  • Regex этот формат вопроса в LaTeX
  • Использование sed для добавления URL-адреса в начало каждой строки
  • Раскрашивание хвостового выхода с помощью sed
  • grep first n и последние 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 - лучшая ОС в мире.