SED: copier/coller plusieurs lignes
Greg
-
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
un truc tout bete a faire mais je n'arrive pas a trouver:
comment copier plusieurs lignes et les coller a un autre endroit dans le fichier ? Tout ca en utilisant SED (de preference) et en effectuant la meme action sur plusieurs fichiers a la fois.
Merci d'avance !
Greg
un truc tout bete a faire mais je n'arrive pas a trouver:
comment copier plusieurs lignes et les coller a un autre endroit dans le fichier ? Tout ca en utilisant SED (de preference) et en effectuant la meme action sur plusieurs fichiers a la fois.
Merci d'avance !
Greg
Configuration: Ubuntu 9.10 Firefox 3.5.7
8 réponses
-
Merci pour ton exemple tres clair jipicy !
Si je comprends bien, "3N" permet de lire la 3eme ligne et la ligne suivante, "h" copie en memoire et ensuite "4G" colle ce qui a ete copie apres la 4eme ligne.
Comment faire maintenant si je veux copier un bloc de plusieurs lignes et pas seulement 2 lignes ? J'ai essaye de jouer avec la commande "N" mais en vain.... et la lecture du manuel de sed ne m'eclaire pas plus...
Encore merci ! -
Comment faire maintenant si je veux copier un bloc de plusieurs lignes et pas seulement 2 lignes ? J'ai essaye de jouer avec la commande "N" mais en vain.... et la lecture du manuel de sed ne m'eclaire pas plus...
D'où ma demande d'exemple concret, à chaque cas sa syntaxe (même si des syntaxes généralistes peuvent être appliquées) ;-((
Pour généraliser, il faut ajouter chaque ligne suivante en testant l'existence (ou pas, ça dépend des cas) d'un motif dans la dernière ligne à prendre en compte, à l'aide d'une boucle...
Voir :
Introduction à Sed - Part I
Introduction à Sed - Part II
Introduction à Sed - Part III
-
Salut,
Exemple AVANT => APRES, merci ;-)
-
salut svp aider moi c urgent
j'ai un fichier ou j'ai plusieurs lignes
je voulais utiliser awk ou sed pour copier des lignes et les coller dans la ligne précédente par exemple
*A340/redft/zyfzhns/gtuizpoak/gzhjez/AMAL
/NCEN/SFRE/234f.kdv/
/KZUEOKZ/Z;HDIO/
/NU=572
*A340/redft/zyfzhns/gtuizpoak/gzhjez/AMAL
/NCEN/SFRE/234f.kdv/
/KZUEOKZ/Z;HDIO/
/NU=572
suivant
suivant
............
maintenant je voudrais avoir au finish
*A340/redft/zyfzhns/gtuizpoak/gzhjez/AMAL /NCEN/SFRE/234f.kdv//KZUEOKZ/Z;HDIO//NU=572
*A340/redft/zyfzhns/gtuizpoak/gzhjez/AMAL /NCEN/SFRE/234f.kdv//KZUEOKZ/Z;HDIO//NU=572
est ce que quelqu'un peut m'aider svp
truc urgent -
-
-
-
Desole mais je seche completement, c'est pour cela que je n'ai propose aucune solution. Je me doute qu'il faut utiliser les commandes H et G de sed, mais aucune idee comment...
Quelqu'un aurait-il un tuyau a me donner ? Merci d'avance ! -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Non, je te demande un exemple concret de fichier à modifier.
-
Ok, desole j'avais mal compris ;)
Voici donc le contenu ultra-simplifie d'un fichier avant et apres le copier-coller que j'aimerais effectuer. Les lignes 3 et 4 ont ete dupliquees.
Fichier initial:
aaaaaaa
bbbbbbb
cccccccc
ddddddd
eeeeeee
Fichier apres copier/coller:
aaaaaaa
bbbbbbb
cccccccc
ddddddd
cccccccc
ddddddd
eeeeeee
Il s'agit toutefois de realiser ce copier-coller sur une multitude de fichiers simultanement (les lignes a copier-coller sont toujours au meme endroit dans les differents fichiers).
Merci pour ton aide jipicy ! -
[tmpfs]$ cat plop bar foo aaaaaaa bbbbbbb cccccccc ddddddd eeeeeee aaaaaaa bbbbbbb cccccccc ddddddd eeeeeee aaaaaaa bbbbbbb cccccccc ddddddd eeeeeee [tmpfs]$ sed -s -i.bak '3N;h;4G' * [tmpfs]$ cat plop bar foo aaaaaaa bbbbbbb cccccccc ddddddd cccccccc ddddddd eeeeeee aaaaaaa bbbbbbb cccccccc ddddddd cccccccc ddddddd eeeeeee aaaaaaa bbbbbbb cccccccc ddddddd cccccccc ddddddd eeeeeee [tmpfs]$
;-))
-
Ok merci pour le tuyau, c'est vraiment sympa ! Je vais me plonger dans cette intriduction a Sed, j'ai encore pas mal a apprendre ;)
Bonne journee !