sed one-liner для удаления любой строки, начинающейся с цифры

введите описание изображения здесь

Представьте, что я работаю с этим файлом.

  • Скользящее среднее в файле журнала с awk или другими утилитами unix?
  • Работает ли ] для sed шаблонов на всех дистрибутивах Linux?
  • поиск точной строки в unix
  • Полоса прокрутки пробелов из файлов
  • Используйте sed, чтобы удалить все, кроме определенного шаблона
  • Как выполнить действие только в первой строке?
  • Начало первой видимой строки скрыто, поэтому игнорируйте это. 43 – начало следующей строки, и эта строка будет удалена.

    Следующая строка (начинающаяся с 44 и заканчивающаяся периодом) будет удалена.

    Следующая строка (которая состоит только из 424) также исчезла.

    Следующая строка (которая состоит из «11. Король и герой») также исчезла.

    Следующая строка остается.

  • Используйте AWK для разделения подстроки на последние n символов на новый столбец
  • Regex этот формат вопроса в LaTeX
  • Поиск и удаление строк, содержащих несколько шаблонов в файле
  • Извлечение значений из блока данных
  • sed insert в определенных положениях
  • как захватить последнюю версию ядра из grub.conf
  • 3 Solutions collect form web for “sed one-liner для удаления любой строки, начинающейся с цифры”

     sed -e '/^[0-9]/d' filename > filename.new 

    или изменить на месте

     sed -i -e '/^[0-9]/d' filename 

    Я использовал бы grep(1) для этого:

     grep -v '^[0-9]' filename 

    ^[0-9] соответствует любой строке, начинающейся с цифры, и -v исключает строки, которые соответствуют, вместо включения. Вы также можете использовать класс символов [:digit:] вместо [0-9] .

    Вместо -v вы можете инвертировать диапазон:

     grep '^[^0-9]' filename 

    Это будет соответствовать любой строке, которая не начинается с цифры, но она не будет соответствовать пустым строкам.

    С grep , sed и awk мое общее правило заключается в том, что для сопоставления и простого извлечения используйте grep , для перезаписи без сохранения состояния используйте sed и для изменений с сохранением состояния, используйте awk . Вот почему я предлагаю использовать grep вместо sed как вы задали в своем вопросе (и другие уже ответили на sed ).

     sed -e '/^[0-9].*$/d' oldfile > newfile 
    Linux и Unix - лучшая ОС в мире.