Come stampare l'ennesima colonna di un file di testo con AWK usando argv

StackOverflow https://stackoverflow.com/questions/319899

  •  11-07-2019
  •  | 
  •  

Domanda

Supponiamo di avere un file di testo con dati separati da spazi bianchi in colonne. Voglio scrivere uno script di shell che prende come input un nome file e un numero N e stampa solo quella colonna. Con awk posso fare quanto segue:

awk < /tmp/in '{print $2}' > /tmp/out

Questo codice stampa la seconda colonna.

Ma come si potrebbe avvolgerlo in uno script di shell in modo che una colonna arbitraria possa essere passata in argv?

È stato utile?

Soluzione

awk -v x=2 '{print $x}'

o in uno script di shell:

#!/bin/sh
num=$1
awk < /tmp/in -v x=$num '{print $x}' > /tmp/out

Altri suggerimenti

awk '{print 

Dove $ myvar è la colonna della variabile (un numero intero). Fai attenzione alle iniezioni di script!

$myvar'}' < /tmp/in > /tmp/out

Dove $ myvar è la colonna della variabile (un numero intero). Fai attenzione alle iniezioni di script!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top