2010-04-14 44 views
5

我有一个txt文件,其中包含由制表符分隔的列,并基于该文件,我想创建一个仅包含某些列信息的新文件。如何打印由选项卡分隔的选定列?

这是我现在有:

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

不同在于工作时第5列包含空格e.g 123 Street,只有123显示出来并在街上被认为是另一列。

我该如何实现我想要做的?

回答

4

可以指定field separator制表:

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

或者from the command line这样的:

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

什么简单削减壳COMAND?

很简单但做这项工作

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

您可以使用下列方式猛砸语法:

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

,这将节省由制表符分隔成新的文件1和第5列。

相关问题