53 votes

Bash/sed/awk/etc supprime chaque autre saut de ligne

Une commande bash affiche ceci :

Nom d'exécution: vmhba2:C0:T3:L14
État du groupe: actif
Nom d'exécution: vmhba3:C0:T0:L14
État du groupe: actif non optimisé
Nom d'exécution: vmhba2:C0:T1:L14
État du groupe: actif non optimisé
Nom d'exécution: vmhba3:C0:T3:L14
État du groupe: actif
Nom d'exécution: vmhba2:C0:T2:L14
État du groupe: actif

J'aimerais le rediriger vers quelque chose pour que cela ressemble à ceci :

Nom d'exécution: vmhba2:C0:T1:L14 État du groupe: actif 
Nom d'exécution: vmhba3:C0:T3:L14 État du groupe: actif non optimisé
Nom d'exécution: vmhba2:C0:T2:L14 État du groupe: actif
[...]

c'est-à-dire supprimer chaque autre saut de ligne

J'ai essayé ... |tr "\nGroup" " " mais cela a supprimé tous les sauts de ligne et a également supprimé d'autres lettres. Merci

3 votes

tr est entièrement basé sur des caractères : vous avez demandé à tr de supprimer les sauts de ligne et tous les 'G', 'r', 'o', 'u' et 'p'.

0 votes

Cherchez-vous toutes les autres (simples) nouvelles lignes à la fin d'une ligne, ou plusieurs nouvelles lignes comme \n\n, ou les deux ?

2voto

jfg956 Points 1106

En bash:

... | while read l1; do read l2; echo "$l1 $l2"; done

1voto

Chris Koknat Points 111

Si Perl est une option:

perl -pe 's/\n/ / if $. % 2 == 1' file

s/\n/ / remplace le saut de ligne par un espace
$. est le numéro de ligne

-2voto

CGriffitt Points 171

Que diriez-vous d'utiliser grep ?

.. | grep -v '^Group State'

1 votes

Cela élimine les lignes alternatives. L'OP veut qu'elles soient ajoutées.

0 votes

Oui, après avoir relu la question, je viens de réaliser que :)

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