Использование "sed" для раскомментирования строк, соответствующих определенному шаблону

Использованиеsed:

sed -i -e 's/ /\n/' <(sort -n <(sed -e 'N;s/\n/ /' in.txt))

Пояснения:

  • Части sed -e 'N;s/\n/ /' in.txt, соединяющие каждые две строки вместе с одним пробелом
  • Часть sort -n, выполняющая числовую сортировку
  • Затем sed -e 's/ /\n/', мы разбиваем строку на две отдельные строки в соответствии с единым пробелом между ними.
  • -iзапишет изменения во входной файл на месте, используя -i.bakсначала создаст резервную копию из входного файла.
3
05.10.2019, 00:23
2 ответа

Я бы сделал это, используя диапазон адресов . Мы хотим начать, когда увидим second-option, и закончить, когда увидим пустую строку :

.
#!/bin/sed -f

/^#.*second-option/,/^#? *$/s/^# //
#     from         |  to   | substitute
3
27.01.2020, 21:17
$ sed -e '
    /^#[[:blank:]]*second-option[)]$/!b
    :a;$!N;s/\\$/&/;ta
    s/\(\n\)#/\1/g;s/^#//
  ' file

В командной строке bashвPosix sed

Или следующее с Gnu sed:

 $ sed -e '/^#\s*second-option[)]$/,/[^\]$/s/^#//' file
1
27.01.2020, 21:17

Теги

Похожие вопросы