iirc :
cat filename.txt | awk '{ print $2 $4 }'
oder, wie in den Kommentaren erwähnt:
awk '{ print $2 $4 }' filename.txt
Sie können den cut
verwenden Befehl:
cut -d' ' -f3,5 < datafile.txt
druckt
1657 19.6117
1410 18.8302
3078 18.6695
2434 14.0508
3129 13.5495
die
-d' '
- Mittel, verwenden Siespace
als Trennzeichen-f3,5
- 3. und 5. Spalte nehmen und drucken
Die cut
ist viel schneller für große Dateien als reine Shell-Lösung. Wenn Ihre Datei durch mehrere Leerzeichen getrennt ist, können Sie diese zuerst entfernen, wie zum Beispiel:
sed 's/[\t ][\t ]*/ /g' < datafile.txt | cut -d' ' -f3,5
wobei der (gnu) sed jeden tab
ersetzt oder space
Zeichen mit einem einzigen space
.
Für eine Variante - hier ist auch eine Perl-Lösung:
perl -lanE 'say "$F[2] $F[4]"' < datafile.txt
Der Vollständigkeit halber:
while read -r _ _ one _ two _; do
echo "$one $two"
done < file.txt
Statt _
eine beliebige Variable (wie junk
) können ebenfalls verwendet werden. Es geht nur darum, die Spalten zu extrahieren.
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