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

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

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

Начало первой видимой строки скрыто, поэтому игнорируйте это. 43 – начало следующей строки, и эта строка будет удалена.

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

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

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

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

  • Печать с максимальным количеством символов в строке, но без выреза
  • Используя sed, добавьте строки линии X выше соответствия
  • Как заменить строку содержимым файла и вокруг содержимого некоторым текстом?
  • Извлечь определенное значение из блоков данных
  • Все вхождения регулярного выражения удаляются без использования «глобального» модификатора
  • Неправильное поведение SED с входным файлом
  • Как удалить определенный номер в файле?
  • sed и sudo с заменой строки
  • 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 - лучшая ОС в мире.