Como insiro um caractere no início de cada linha de um parágrafo que contém uma string

1

Tipo de solicitação diferente aqui: Eu tenho um arquivo de texto no qual preciso colocar um caractere @ no início de cada parágrafo (parágrafos = separados por linhas em branco) que contém uma determinada cadeia de pesquisa. Por exemplo

hello

this
is
a
test

hi

Deve render:

hello

@this
@is
@a
@test

hi

Eu tenho o seguinte para a impressão seletiva de um parágrafo, mas ele não insere o caractere # no início de cada linha:

sed -e '/./{H;$!d;}' -e 'x;/SEARCH_STRING/!d;'

Alguma ideia? Obrigado antecipadamente!

    
por user125343 28.07.2015 / 20:58

1 resposta

0

Não é em grande parte uma questão de substituir o% final!d ('não excluir') por s/\n/\n@/g; ('substituir novas linhas por novas linhas mais um caractere adicional')?

$ cat file
hello

this
is
a
test

hi


$ sed -e '1{x;$!d}' -e '/./{H;$!d;}' -e 'x;/test/ s/\n/\n@/g;' file
hello

@this
@is
@a
@test

hi

A expressão extra 1{x;$!d} apenas evita uma linha em branco adicional que resultaria da anexação da primeira linha ao espaço de armazenamento (vazio).

    
por 28.07.2015 / 22:10

Tags