2009-08-12 7 views
0

Je possède ce fichier d'entrée (l'espace est le séparateur pour les deux éléments de la ligne sinon il y a juste un élément)Utiliser awk pour obtenir champs suivants

a:1 
a:1 123 
b:2 345 
c:3 456 
d:4 
d:4 456 
.. 
.. 

Je suis intéressé par la sortie pour être

a:1 123 
d:4 456 

C'est-à-dire les lignes qui ont le champ précédent pour avoir un seul champ.

+0

si vous avez deux (ou plusieurs) lignes consécutives avec un seul champ? –

Répondre

1

Essayez ceci:

{ if (NF == 1) { getline; print; next; } } 
+2

ou juste: NF == 1 {getline; print} –

+0

Je ne m'habituerai jamais au formulaire conditionnel en AWK :) –

+0

En fait, c'est plutôt simple: pattern {action} pattern {action} ... paires. Si le motif correspond, effectuez l'action. Si le motif est omis, effectuez toujours l'action. Si l'action est omise, l'action par défaut est d'imprimer la ligne en cours. –

Questions connexes