J’ai répondu vite c’est assez cryptique…
[mono]“1;/${mail}/{exit}”[/mono] est remplacé par le shell par [mono]“1;/seb@1test.local/{exit}”[/mono].
Ensuite on découpe sur le [mono];[/mono] pour voir chaque commande awk.
1;
/seb@1test.local/ {
exit
}
Le 1 est une condition toujours vraie (0 est faux et tout ce qui n’est pas 0 est vrai c’est hérité du C).
Quand une condition n’est pas suivie d’un bloque de code [mono]{}[/mono], par défaut le bloque de code est [mono]{print}[/mono] et [mono]print[/mono] prend par défaut [mono]$0[/mono] comme argument. [mono]$0[/mono] est une variable de awk qui représente la ligne entière.
Donc ici, [mono]1;[/mono] ça recopie tout ([mono]awk ‘1’ fichier[/mono] est équivalent à [mono]cat fichier[/mono]).
Le second c’est une condition [mono]/seb@1test.local/[/mono] qui est une contraction de [mono]$0 ~ /seb@1test.local/[/mono] et qui signifie « si on trouve l’expression régulière [mono]seb@1test.local[/mono] dans la ligne ([mono]$0[/mono]) ». Et le bloc de code qui est exécuté c’est [mono]exit[/mono] pour arrêter awk.
Donc ça donne :
Pour chaque ligne :
[ul][li] on écris la ligne[/li]
[li] si la ligne que l’on vient d’écrire contient « seb@1test.local »
[list] [] on s’arrête[/li][/ul][/:m][/list:u]