GNU/Linux >> Tutoriels Linux >  >> Linux

sed joindre des lignes ensemble

 sed ':a;/0$/{N;s/\n//;ba}'

En boucle (branche ba pour étiqueter :a ), si la ligne courante se termine par 0 (/0$/ ) ajouter la ligne suivante (N ) et supprimer la nouvelle ligne intérieure (s/\n// ).

awk :

awk '{while(/0$/) { getline a; $0=$0 a; sub(/\n/,_) }; print}'

Perl :

perl -pe '$_.=<>,s/\n// while /0$/'

bash :

while read line; do 
    if [ ${line: -1:1} != "0" ] ; then 
        echo $line
    else echo -n $line
fi
done 

awk pourrait aussi être court :

awk '!/0$/{printf $0}/0$/'

tester :

kent$  cat t
#aasdfasdf
#asbbb0
#asf
#asdf0
#xxxxxx
#bar

kent$  awk '!/0$/{printf $0}/0$/' t
#aasdfasdf#asbbb0
#asf#asdf0
#xxxxxx#bar 

Linux
  1. Correspondance de modèle multiligne à l'aide de Sed, Awk ou Grep ?

  2. Remplacer la plage de lignes par la plage de lignes (sed ou autres) ?

  3. Awk de différentes lignes ?

  4. Majuscule première lettre de mots à l'aide de SED

  5. Supprimer les lignes vides dans un fichier texte via grep

Comment joindre plusieurs lignes en une seule dans un fichier sous Linux

Comment supprimer des lignes d'un fichier à l'aide de la commande Sed

Comment supprimer des lignes vides dans des fichiers à l'aide de Grep, Sed et Awk

Tutoriel Regex pour les exemples Linux (Sed &AWK)

Les drapeaux sed e et g ne fonctionnent pas ensemble

Comment modifier un fichier sur place en utilisant awk ? (comme avec sed -i)