Bonjour mesdames, messieurs.
J’essayais de faire une truc simple avec awk - Le langage de programmation spécialisé dans le traitement de fichier texte :
Supprimer les lignes de commentaires et ligne vide d’un fichier.
Le fichier : cat ipv4-flood-20220223.txt
# 20220223
1.2.3.4
5.6.7.8
9.0.1.2
J’ai fais cela :
Supprimer les lignes de commentaires :
awk '!/^\#/ { print $0 }' ipv4-flood-20220223.txt
Alors j’ai écris cela pour supprimer les lignes vides :
awk '!/^\#/ || !/^$/ { print $0 }' ipv4-flood-20220223.txt
- Soit (par négation) la ligne commence par un dièse « # »,
- Soit (par négation) la ligne est vide.
- J’affiche les autres
14:11:16 root@lab3w:~ # awk '!/^\#/ || !/^$/ { print $0 }' ipv4-flood-20220223.txt
# 20220223
1.2.3.4
5.6.7.8
9.0.1.2
Vu que çà me sortait quelque chose - de faux - j’ai écris cela :
cat ipv4-flood-20220223.txt | awk -- '!/^\#/ { print $0 }' | sed '/^$/d'
14:14:18 root@lab3w:~ # cat ipv4-flood-20220223.txt | awk -- '!/^\#/ { print $0 }' | sed '/^$/d'
1.2.3.4
5.6.7.8
9.0.1.2
Je souhaitais utiliser seulement awk avec plusieurs vérifications.
J’ai essayé cela :
awk '!/^\#/ && !/^$/ { print $0 }' ipv4-flood-20220223.txt
Et hop çà fonctionne !
14:15:01 root@lab3w:~ # awk '!/^\#/ && !/^$/ { print $0 }' ipv4-flood-20220223.txt
1.2.3.4
5.6.7.8
9.0.1.2
Pourtant la ligne ne pas commencer à la fois par un dièse « # » ET à la fois (commencer) être vide bizarre !
J’ai déjà remarqué cela - Et criez fort (mais gentillement) aux développeurs PHP et JavaScript dans l’espace, la Vie - mais pas dans le vent en faisant marcher leur logique.
Ils m’ont dit… oui Romain tu as raison !
Qu’en pensez-vous ? Vous…
Bise
Bonne fin d’journée à vous !
Cordialement,
Romain.
J’ajoute un super lien Français : Traitement de fichiers texte en ligne de commande sous Linux