Используя скрипт BASH, как изменить строки на основе шаблона? - PullRequest
1 голос
/ 25 февраля 2012

У меня есть файл, который мне нужно обработать

##PAT1##
#xxxdx
#ddddvdvc
##PAT2##
#dsfcdsfd
#dsfwf

Я хочу удалить начальный # символ, если передам шаблон. Поэтому, если я передаю ##PAT1##, я хочу удалить # из следующих 2 строк (до следующего шаблона) - всегда через 2 строки после шаблона. Я пытался с sed безуспешно.

Спасибо

Ответы [ 2 ]

2 голосов
/ 25 февраля 2012

В одну сторону, используя GNU-версию sed:

Содержимое infile:

"##PAT1##"
"#xxxdx"
"#ddddvdvc"
"##PAT2##"
"#dsfcdsfd"
"#dsfwf"

Команда:

sed '/^"##PAT1##"/,+2 s/^\("\)#\([^#]\)/\1\2/' infile

Выход:

"##PAT1##"
"xxxdx"
"ddddvdvc"
"##PAT2##"
"#dsfcdsfd"
"#dsfwf"
1 голос
/ 25 февраля 2012

Это может работать для вас:

sed '/^"##PAT1##/{$!N;$!N;s/#//5g}' file
"##PAT1##"
"xxxdx"
"ddddvdvc"
"##PAT2##"
"#dsfcdsfd"
"#dsfwf
...