GNU/Linux >> Tutoriels Linux >  >> Linux

Prendre la nième colonne dans un fichier texte

irc :

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

ou, comme mentionné dans les commentaires :

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

Vous pouvez utiliser le cut commande :

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

impressions

1657 19.6117
1410 18.8302
3078 18.6695
2434 14.0508
3129 13.5495

le

  • -d' ' - signifie, utilisez space comme délimiteur
  • -f3,5 - prenez et imprimez la 3ème et la 5ème colonne

Le cut est beaucoup plus rapide pour les fichiers volumineux en tant que solution shell pure. Si votre fichier est délimité par plusieurs espaces blancs, vous pouvez d'abord les supprimer, comme :

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

où le (gnu) sed remplacera tout tab ou space caractères avec un seul space .

Pour une variante - voici également une solution perl :

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

Par souci d'exhaustivité :

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

Au lieu de _ une variable arbitraire (telle que junk ) peut également être utilisé. Le but est juste d'extraire les colonnes.

Démo :

$ 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. Renommer un fichier dans le terminal Linux

  2. Comment ajouter du texte à la fin du fichier sous Linux

  3. Quelle est la meilleure façon de retirer un segment d'un fichier texte ?

  4. Ajouter du texte à la fin d'un fichier texte ?

  5. Ajouter du texte à la fin du nom de fichier ?

comment utiliser la commande Linux Sort pour trier le fichier texte selon la 4ème colonne, ordre numérique ?

Écrire dans le fichier .txt ?

Comment enregistrer la sortie de cette commande awk dans un fichier ?

Comment ajouter du texte à un fichier ?

Comment diviser un fichier texte en plusieurs fichiers *.txt ?

Comment créer un fichier .txt aléatoire (texte lisible par l'homme comme ascii) sous Linux