BEGIN { FS=":"; }
ou
$ awk -F ':' '{...}'
BEGIN { OFS=";"; }
Pour afficher des traces sur la console au lieu de stdout :
BEGIN { TTY=ENVIRON["SSH_TTY"]; } { # Trace print "debug,information..." >TTY }
Régler par exemple un problème sur le séparateur des décimales.
$ set LANG=fr_FR && LC_ALL='fr_FR.UTF-8' && echo "1,2" | awk '{printf("%010.3f\n",$0);}' 000001,200 $ set LANG=C && LC_ALL=C && echo "1.2" | awk '{printf("%010.3f\n",$0);}' 000001.200
{ print strftime("%Y/%m/%d-%H:%M:%S",systime()) }
$ awk '{printf("\047%s\047,\n", $1);}' fichier
ou
$ awk -v Quote="'" '{print Quote $1 Quote ","}' fichier
Sortie:
'valeur1', 'valeur2', ...
for (i=2 ; i<=NF ; i++) { chaine=chaine " " $i }
------------------------------------------------------------------------ 2.1.13 Awk ------------------------------------------------------------------------ - Définition du séparateur : awk '{FS=":"; ... ou awk -F ':' ... - N'afficher qu'un champ # cat fichier.txt | awk '{print "champ3="$3}' - Insérer un X après la 9ème position et avant la 10ème $ awk '{for (i=1; i <= 9; i++) {printf("%s ", $i)} printf("X"); \ for (i=10; i <= NF; i++) {printf(" %s", $i);} printf("\n" );}' \ fichier.txt - Remplacer le mois (ici Dec pour décembre) par 12/2007 dans messages $ grep ERROR messages | egrep '^Dec' | \ awk 'BEGIN {printf("%s/12/2007",$2); \ for (i=3; i <= NF; i++) {printf(" %s", $i);} printf("\n" );}' - Faire la somme sur une colonne $ find . -name "A198549*" -exec grep "3040520446855" {} \; \ | awk '{CPT=CPT+substr($0,44,6);} END { print CPT}' - Faire la somme des valeurs contenues dans un fichier $ awk '{ s+= $1 } END { print s }' fichier - Identifier les mails dont la transmission a été différée (deffered) clear; \ cat /var/log/postfix/postfix-in.1 \ | egrep '^Nov 14' \ | awk '/status=deferred/{EMAIL=$7;sub("^.*\<","",EMAIL);sub("\>,","",EMAIL);if (EMAIL!="postmaster@batz.logilec.fr") print substr($6,1,9),EMAIL}' \ | uniq > /tmp/list.txt; \ for ID in `cat /tmp/list.txt`; do \ if [ -z "`echo $ID | grep '@'`" ] ; then \ echo $ID; \ grep $ID /var/log/postfix/postfix-in.1 \ | awk '/from=/{EMAIL=$7;sub("^.*\<","",EMAIL);sub("\>,","",EMAIL);print " FROM="EMAIL}' \ | uniq; \ else \ echo " TO="$ID; \ fi; \ done; \ rm -f /tmp/list.txt C174E7DAB FROM=Annie.Thevenet@unilever.com TO=edi@logilec.fr 3FF8B7E0A FROM=Peggy.Landrain@scamark.fr TO=exploit@logilec.fr C174E7DAB FROM=Annie.Thevenet@unilever.com TO=edi@logilec.fr 3FF8B7E0A FROM=Peggy.Landrain@scamark.fr TO=logistique@logilec.fr 811B27E0D FROM=papoosesuu@correo-electronico.com TO=orn@logilec.fr awk '/C174E7DAB|3FF8B7E0A|45B8D7E0B|C40C37E11/{print $0}' /var/log/postfix/postfix-in.1 | grep "status=sent"