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