sed заменяет соответствующую строку, которая не начинается с #

У меня есть один файл с именем «test-file». У него всего две следующие строки (одна строка с символом # на передней панели и вторая строка с тем же содержимым, но без хеша):

#contents of line contents of line 

Я хочу обновить / заменить содержимое второй строки с помощью команды sed. Я знаю его простой синтаксис, например:

 sed -i 's/.*contents of line.*/updated contents/' test-file 

но приведенная выше команда заменяет обе строки, тогда как я не хочу обновлять первую строку знаком # в начале.

2 Solutions collect form web for “sed заменяет соответствующую строку, которая не начинается с #”

пытаться

 sed 's/^[^#]*contents of line.*/updated contents/' test-file 

или с началом привязки строки ^ , и вы знаете, что строка начинается с content ... , вы можете сделать:

 sed 's/^contents of line.*/updated contents/' test-file 

Если вы знаете, какую строку вы собираетесь обновить, вы можете изменить ее с помощью номера строки адреса, например.

 sed '2s/.*/updated content/' test-file 

добавьте -i когда вы были довольны результатом.

Вы можете сделать редактирование следующим образом:

 sed -e '/^#/!s/.*/UPDATED_CONTENTS/' input-file.txt 

или же

 sed -e '/^#/!c\ UPDATED_CONTENTS' input-file.txt 

это должно читаться как: для любой строки, которая не начинается с # , измените всю эту строку на указанную.

И если вы обеспокоены тем, что перед октофорпом могут стоять пробелы, то настройте регулярное выражение в /^[[:blank:]]*#/ , оставив остальное в точности как есть.

  • Bash Разделить на файлы построчно
  • Как переместить строку из файла в другой файл на основе сопоставления с образцом?
  • Как заполнить пробелы в первом столбце значением, полученным из предыдущей непустой строки?
  • Заменить строку в одном файле содержимым другого файла при совпадении столбца
  • Как переформатировать блоки зоны named.conf в одну строку?
  • Как удалить инверсные пары совпадений?
  • Разобрать вывод с динамической шириной столбца и пустыми полями
  • Разделить файл с разделителями на несколько файлов на основе значений в одном столбце
  • Выберите линии на основе линий над ними
  • Как записать в новый файл, если есть вхождения в другом?
  • grep'ping файлы для нескольких строк (не в одной строке)
  • Interesting Posts

    Нажатие на панель меню приложений Gtk убивает мышь

    Когда «если» не нужно?

    С mv, можно установить временную зависимость от файлов mv'ed?

    Установка разделяемой библиотеки – вопросы и проблемы

    Малый распределенный вычислительный кластер

    Комбинация клавиш для копирования текущей команды из терминала в буфер обмена

    Консольный торрент-клиент поддерживает магнитную ссылку?

    удалить все пустые каталоги, начиная с

    Как отключить автоматическое отключение звука после загрузки в gnome?

    Имена файлов каталогов с sed с пробелами

    Запишите переменную, содержащую большой текст, с \ n в файл с обычными интерпретаторами интерпретаторов. Как ты делаешь это?

    Как восстановить разрешения с помощью BackInTime / rsync?

    определять измененные пользователем файлы

    Удаленное программное обеспечение для поддержки Linux для Windows, например TeamViewer

    mdadm – исключить из монитора

    Linux и Unix - лучшая ОС в мире.