Awk pour ignorer les lignes vides
la sortie de mon script est délimitée par l'ongletawk
comme :
awk -v variable=$bashvariable '{print variable"t singlet" "t double"}' myinfile.c
est exécutée dans une boucle while qui met à jour la valeur de la variable et le fichier myinfile.c pour chaque cycle.
J'obtiens les résultats attendus avec cette commande .
Mais si le inmyfile.c contient une ligne vierge (il peut contenir) il n'imprime aucune information pertinente. puis-je dire awk
pour ignorer la ligne blanche ?
je sais que cela peut être fait en enlevant les lignes vides de myinfile.c avant de le transmettre à awk
.
Je suis dans la connaissance de l' sed
et tr
mais je veux awk
le faire dans la commande elle-même et pas une solution en tant que ci-dessous ou une canalisation d'eau.
sed '/^$/d' myinfile.c
tr -s "n" < myinfile.c
Merci d'avance pour vos suggestions et réponses.
4 réponses
Il existe deux approches que vous pouvez essayer de filtrer les lignes:
awk 'NF' data.txt
et
awk 'length' data.txt
il suffit de les placer au début de votre commande, i.e.,
awk -v variable=$bashvariable 'NF { print variable ... }' myinfile
ou
awk -v variable=$bashvariable 'length { print variable ... }' myinfile
ces deux éléments agissent en tant que "gatekeepers" /if-statements.
la première approche ne fonctionne qu'en imprimant des lignes où le nombre de champs (NF
) n'est pas nul (c.-à-d. supérieur à zéro).
la deuxième méthode examine la longueur de ligne et agit si la longueur n'est pas nulle (c.-à-d. supérieure à zéro)
Vous pouvez choisir l'approche qui convient le mieux pour vos données/besoins.
vous pouvez juste ajouter
/^\s*$/ {next;}
à l'avant de votre script qui correspondra aux lignes vierges et sautera le reste des règles de correspondance awk. Mettre tout cela ensemble:
awk -v variable=$bashvariable '/^\s*$/ {next;} {print variable"\t single\t" "\t double"}' myinfile.c
peut-être que vous pourriez essayer ceci:
awk -v variable=$bashvariable '{print variable"\t single\t" "\t double"}' myinfile.c
essaye ceci:
awk -v variable=$bashvariable '/^.+$/{print variable"\t single\t" "\t double"}' myinfile.c