2010-04-14 10 views
5

Mam plik txt z kolumnami oddzielone tabulatorami i na podstawie tego pliku, chcę utworzyć nowy plik, który zawiera tylko informacje z niektórych kolumn.Jak wydrukować wybrane kolumny rozdzielone tabulatorami?

To co mam teraz:

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

To działa poza tym, że gdy kolumna 5 zawiera przestrzenie np 123 Street tylko 123 zjawia i ulica jest uważany za innym kolumny.

Jak mogę osiągnąć to, co próbuję zrobić?

Odpowiedz

4

Można określić field separator jako zakładce:

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

Albo from the command line tak:

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

Co prosty wyciąć powłoki COMAND?

bardzo prosty, ale spełnia swoje zadanie

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

Można użyć Bash składnię w następujący sposób:

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

To uratuje 1st i 5 kolumn oddzielonych kartami do nowego pliku.