如何从选项卡分隔的字段文件中删除一些列awk?
c1 c2 c3 ..... c60
Run Code Online (Sandbox Code Playgroud)
例如,删除3到29 之间的列.
Ste*_*ton 43
这是cut命令的用途:
cut -f1,2,30- inputfile
Run Code Online (Sandbox Code Playgroud)
默认为选项卡.您可以使用-d开关更改它.
oli*_*ver 12
您可以遍历所有列并过滤掉您不想要的列:
awk '{for (i=1; i<=NF; i++) if (i<3 || i>29) printf $i " "; print""}' input.txt
Run Code Online (Sandbox Code Playgroud)
其中,NF为您提供记录中的字段总数.
对于满足条件的每列,我们打印列,后跟空格" ".
编辑:约翰尼的评论后更新:
awk -F 'FS' 'BEGIN{FS="\t"}{for (i=1; i<=NF-1; i++) if(i<3 || i>5) {printf $i FS};{print $NF}}' input.txt
Run Code Online (Sandbox Code Playgroud)
这有两种改进: