GNU/Linux >> Linux Esercitazione >  >> Linux

Prendi l'ennesima colonna in un file di testo

iirc :

cat filename.txt | awk '{ print $2 $4 }'

o, come menzionato nei commenti :

awk '{ print $2 $4 }' filename.txt

Puoi usare il cut comando:

cut -d' ' -f3,5 < datafile.txt

stampe

1657 19.6117
1410 18.8302
3078 18.6695
2434 14.0508
3129 13.5495

il

  • -d' ' - significa, usa space come delimitatore
  • -f3,5 - prendi e stampa la 3a e la 5a colonna

Il cut è molto più veloce per file di grandi dimensioni come soluzione shell pura. Se il tuo file è delimitato da più spazi bianchi, puoi prima rimuoverli, ad esempio:

sed 's/[\t ][\t ]*/ /g' < datafile.txt | cut -d' ' -f3,5

dove (gnu) sed sostituirà qualsiasi tab o space caratteri con un singolo space .

Per una variante - ecco anche una soluzione perl:

perl -lanE 'say "$F[2] $F[4]"' < datafile.txt

Per completezza:

while read -r _ _ one _ two _; do
    echo "$one $two"
done < file.txt

Invece di _ una variabile arbitraria (come junk ) può essere utilizzato anche. Il punto è solo estrarre le colonne.

Demo:

$ while read -r _ _ one _ two _; do echo "$one $two"; done < /tmp/file.txt
1657 19.6117
1410 18.8302
3078 18.6695
2434 14.0508
3129 13.5495

Linux
  1. Rinominare un file nel terminale Linux

  2. Qual è il modo migliore per estrarre un segmento da un file di testo?

  3. Prendi la prima colonna da 2 file e scrivila in un terzo file?

  4. Aggiungere del testo alla fine del nome del file?

  5. Come rimuovo le nuove righe da un file di testo?

Come aggiungere testo alla fine del file in Linux

Come aggiungere numeri di riga a file di testo su Linux

Script Bash:controlla se un file è un file di testo?

Aggiungere testo alla fine di un file di testo?

Comando della shell per eliminare i caratteri ^M dal file di testo

formato file password ldapsearch