如何打印由制表符分隔的选定列?

时间:2010-04-14 20:07:06

标签: shell awk

我有一个txt文件,其中列由制表符分隔,并且基于该文件,我想创建一个仅包含某些列信息的新文件。

这就是我现在所拥有的:

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

除了当第5列包含空格(例如123 Street)时,只显示123并且街道被视为另一列,

我如何实现我想要做的事情?

3 个答案:

答案 0 :(得分: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 :(得分:2)

简单的 cut shell命令怎么样?非常简单但是工作

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

答案 2 :(得分:0)

您可以通过以下方式使用Bash语法:

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

这会将由制表符分隔的第1列和第5列保存到新文件中。