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

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

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

я ожидал

  • CSV столбчатый переформатированный с SED (или что-то другое coreutil)
  • Как искать и заменять несколько игл одним словом через одно выражение?
  • Как добавить оператор if (относительно пунктуации в слове) к этому сценарию bash
  • Подготовить x / к строке, где x - переменная на каждой строке
  • как вставить пробел между отдельными цифрами в файле?
  • Присоедините произвольные строки для вывода в виде одной строки
  •  4 9 10 

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

     4 9 

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

  • regex - найти недопустимый символ
  • найти строки, которые не заканчиваются на «rpms» с sed
  • bash + регулярное выражение + подтверждение имени машины
  • Вставка текста в начале файла с помощью sed через терминал в Linux
  • Удаление файлов, если содержимое не соответствует шаблону
  • Заменить значения в определенном разделе в файле
  • 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 - лучшая ОС в мире.