2 votes

sed, en utilisant le numéro de ligne

Je veux remplacer certaines lignes, mais d'une manière ou d'une autre, je voudrais ajouter le numéro de ligne à la fin de la ligne remplacée.

s/display/echo print {LINENUMBER}/

input file:
lorem ipsum
display

output:
lorem ipsum
echo print 2

Puis-je le faire avec sed ?

Merci d'avance.

Cs.

3voto

Sandeep Jindal Points 1813

Vous pouvez utiliser la fonction sed = pour écrire le numéro de ligne sur une ligne à part et la fonction sed d pour supprimer le motif correspondant. Ainsi :

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

produira :

lorem ipsum
2

En supposant que vous n'avez pas de nombres sur une ligne par eux-mêmes dans le fichier d'origine, vous pouvez enchaîner une deuxième commande sed pour ajouter le 'echo print' pour ces lignes, quelque chose comme :

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

bien que la syntaxe exacte puisse changer en fonction de votre système ( \d ne pas être toujours disponible et ainsi de suite...)

sed n'est probablement pas l'outil le plus simple pour ce faire.

2voto

Philip Kearns Points 1005

Je ferais ça avec awk :

awk '{if($0=="display") {print "echo print",NR} else print $0}' < file

2voto

choroba Points 17339

Solution Perl :

perl -pe '$_ = "echo print $.\n" if /display/' input

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X