sed, usando o número da linha

2

Eu quero substituir algumas linhas, mas, de alguma forma, gostaria de adicionar o número da linha ao final da linha substituída.

s / display / impressão de eco {LINENUMBER} /

input file:
lorem ipsum
display

output:
lorem ipsum
echo print 2

Posso fazer isso com sed?

Obrigado antecipadamente.

Cs.

    
por user2013619 23.06.2013 / 22:26

3 respostas

3

Você pode usar sed = function para escrever o número da linha em uma linha, por si só, e a função sed d para excluir o padrão correspondente. Então:

sed '/^display$/{=
d
}' [input file]

produzirá:

lorem ipsum
2

Supondo que você não tenha números em uma linha no arquivo original, você pode encadear um segundo comando sed para adicionar a "impressão de eco" para essas linhas, algo como:

sed  's/^(\d+)$/echo print /'

embora a sintaxe exata possa mudar dependendo do seu sistema (nem sempre está disponível e assim por diante ...)

sed provavelmente não é a ferramenta mais simples para fazer isso.

    
por 23.06.2013 / 23:58
2

Eu faria isso com awk :

awk '{if($0=="display") {print "echo print",NR} else print $0}' < file
    
por 23.06.2013 / 22:34
2

Solução de Perl:

perl -pe '$_ = "echo print $.\n" if /display/' input
    
por 23.06.2013 / 22:40

Tags