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:]]*#/ , оставив остальное в точности как есть.

  • Фильтровать разделенные абзацы по их первому слову?
  • Как объединить первые две строки CSV столбец за столбцом?
  • Поиск греческого из командной строки
  • Подсчет по первому столбцу, подсчет по второму столбцу и вывод группы по первому столбцу?
  • переменная alter awk, основанная на совпадении внутри awk
  • как напечатать только часть каждой строки, которая помечается определенным символом
  • AWK | Динамическое преобразование строк в столбцы
  • Bash Разделить на файлы построчно
  • Что возвращает cut, если указанное поле не существует?
  • Что делает `join 'с точки зрения равноценности в SQL или операций в реляционной алгебре?
  • добавление строки в файл, если она отсутствует
  • Linux и Unix - лучшая ОС в мире.