2010-04-14 7 views
5

Ich habe eine TXT-Datei mit Spalten durch Tabs getrennt und basierend auf dieser Datei möchte ich eine neue Datei erstellen, die nur Informationen aus einigen der Spalten enthält. DieseWie werden ausgewählte Spalten durch Tabulatoren getrennt gedruckt?

ist, was ich habe jetzt:

awk '{ print $1, $5 }' filename > newfilename 

Das außer dass funktioniert, wenn Spalte 5 enthält Leerzeichen z 123 Street, nur 123 auftaucht und die Straße als eine weitere Säule betrachtet.

Wie kann ich erreichen, was ich versuche zu tun?

Antwort

4

Sie die field separator als Registerkarte angeben:

awk 'BEGIN { FS = "\t" } ; { print $1, $5 }' filename > newfilename 

Oder from the command line wie folgt aus:

awk -F"\t" '{ print $1, $5 }' filename > newfilename 
1

Was einfach schneiden Shell comand?

sehr einfache, aber macht den Job

cut -d "\t" -f 1,5 filename > newfilename 
0

Sie können Bash Syntax in folgender Weise verwenden:

while IFS=$'\t' read -a cols; do 
    printf "%s\t%s\n" "${cols[0]}" "${cols[4]}"; 
done <in.txt> newfile.txt 

Dies wird 1. und 5. Spalten durch Tabulatoren in die neue Datei getrennt speichern.