J'essaie d'écrire un script awk
qui vérifie certaines conditions et jette les lignes de l'extérieur répondant à ces conditions.
La condition spécifique doit jeter les deux premières lignes du fichier et une ligne qui commence par le texte xyzzy:
. À cette fin, j'ai codé:
awk '
NR < 2 {}
/^xyzzy:/ {}
{print}'
penser que cela jetterait les lignes où l'une de ces deux conditions a été rencontrée et imprimée autrement.
Malheureusement, il semble que le print
soit traité même lorsque la ligne correspond à l'un des deux autres motifs.
Existe-t-il une action C-like continue
qui se déplacera sur la ligne suivante Ignorant toutes les autres vérifications de condition de la ligne actuelle?
Je suppose que je pourrait Utilisez quelque chose comme ((NR > 1) && (!/^xyzzy:/)) {print}
comme la troisième règle mais qui me semble plutôt laidée.
Alternativement, y a-t-il une autre façon de faire cela?
Utilisez le mot-clé next
comme votre action
Ce mot clé est souvent utile lorsque vous souhaitez itérer plus de 2 fichiers; Parfois, c'est le même fichier que vous souhaitez traiter deux fois.
Vous verrez l'idiome suivant:
awk '
FNR==NR {
< stuff that works on file 1 only >
next
}
{
< stuff that works on file 2 only >
}' ./infile1 ./infile2