【发布时间】:2014-04-19 14:17:56
【问题描述】:
我有一个如下所示的文本文件:
A B C A B C A B C A B
G T C A G T C A G T C
A B C A B C A B C A B
A B C A B C A B C A B
A D E A B D E A B D E
A B C A B C A B C A B
C B D G C B D G C B D
有没有办法只提取某些列而保持其他列不变?
例如仅删除第 2 列和第 5 列:
A C A C A B C A B
G C A T C A G T C
A C A C A B C A B
A C A C A B C A B
A E A D E A B D E
A C A C A B C A B
C D G B D G C B D
提前致谢。
更新:
使用 awk 找到了这个答案,但这会提取整个“块”列,我只想提取一些。
用于提取第 3 到 5 列的 Awk:
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
【问题讨论】:
-
常见问题解答。存在各种
awk示例。尝试搜索。 -
我刚刚使用 awk 检查了答案,但它们只提取列的“块”,我想删除不一定相邻的列。
-
根据您要打印的列数,您可以使用
print $1,$2,$4,$6,…,但如果您不关心输出格式,这可能会很乏味,或者类似$3="";$5="";print $0;