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, utilisezspacecomme 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