Files
mkdocs/docs/Linux/awk.md
2020-10-22 20:12:27 +02:00

2.4 KiB

awk

https://www.grymoire.com/Unix/Awk.html

$ cat test.txt
ubuntu	Linux
mint	Linux
debian	Linux
raspbian	Linux
mojave	macOS
sierra	macOS
tiger	macOS
snowleopard	macOS

Afficher la 1ere colonne d'un fichier:

$ awk '{print $1}' test.txt
ubuntu
mint
debian
raspbian
mojave
sierra
tiger
snowleopard

Afficher la 2eme colonne d'un fichier:

$ awk '{print $2}' test.txt
Linux
Linux
Linux
Linux
macOS
macOS
macOS
macOS

Afficher la 1ere colonne d'un fichier, excepté la 1ere ligne (header):

$ awk 'NR!=1{print $1}' test.txt
mint
debian
raspbian
mojave
sierra
tiger
snowleopard

# NR!=n° de ligne

Afficher le fichier entier:

$ awk '{print $0}' test.txt
ubuntu	Linux
mint	Linux
debian	Linux
raspbian	Linux
mojave	macOS
sierra	macOS
tiger	macOS
snowleopard	macOS

# commande identique:
$ awk '1' test.txt

Fichier avec séparateur:

$ cat test.csv
ubuntu,Linux
mint,Linux
debian,Linux
raspbian,Linux
mojave,macOS
sierra,macOS
tiger,macOS
snowleopard,macOS

Afficher la 1ere colonne d'un fichier:

il faut spécifier le séparateur:

$ awk -F"," '{print $1}' test.csv
ubuntu
mint
debian
raspbian
mojave
sierra
tiger
snowleopard
# idem, autre commande:
# FS (Field Separator)
$ awk '{print $2}' FS="," test.csv
Linux
Linux
Linux
Linux
macOS
macOS
macOS
macOS

Afficher les colonnes 1 et 2:

$ awk -F"," '{print $1, $2}' test.csv
ubuntu Linux
mint Linux
debian Linux
raspbian Linux
mojave macOS
sierra macOS
tiger macOS
snowleopard macOS

Afficher les colonnes 1 et 2, avec un séparateur:

# OFS (Output Field Separator)

$ awk -F"," '{print $1, $2}' OFS=";" test.csv
ubuntu;Linux
mint;Linux
debian;Linux
raspbian;Linux
mojave;macOS
sierra;macOS
tiger;macOS
snowleopard;macOS

Afficher la dernière colonne:

$ awk -F"," '{print $NF}' test.csv
Linux
Linux
Linux
Linux
macOS
macOS
macOS
macOS

Afficher l'avant-dernière colonne:

$ awk -F"," '{print $(NF - 1)}' test.csv
ubuntu
mint
debian
raspbian
mojave
sierra
tiger
snowleopard

Passer un argument à awk:

$ x=3

$ awk '{print $0,val}' OFS=, val=$x test.csv
ubuntu,Linux,3
mint,Linux,3
debian,Linux,3
raspbian,Linux,3
mojave,macOS,3
sierra,macOS,3
tiger,macOS,3
snowleopard,macOS,3

$ export x
$ awk  '{print $0,ENVIRON["x"]}' OFS=, test.csv
ubuntu,Linux,3
mint,Linux,3
debian,Linux,3
raspbian,Linux,3
mojave,macOS,3
sierra,macOS,3
tiger,macOS,3
snowleopard,macOS,3