Comment imprimer la Nème colonne d'un fichier texte avec AWK en utilisant argv

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

  •  11-07-2019
  •  | 
  •  

Question

Supposons que j'ai un fichier texte avec des données séparées par des espaces en colonnes. Je veux écrire un script shell qui prend en entrée un nom de fichier et un nombre N et n’imprime que cette colonne. Avec awk, je peux faire ce qui suit:

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

Ce code imprime la deuxième colonne.

Mais comment pourrait-on envelopper cela dans un script shell afin qu'une colonne arbitraire puisse être passée dans argv?

Était-ce utile?

La solution

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

ou dans un script shell:

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

Autres conseils

awk '{print 

Où $ myvar est votre colonne de variable (un entier). Attention aux injections de script!

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

Où $ myvar est votre colonne de variable (un entier). Attention aux injections de script!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top