【发布时间】:2013-02-01 19:43:53
【问题描述】:
我一直在努力编写代码,用于从输入文件中提取每 N 列,并根据提取顺序将它们写入输出文件。
(我的实际情况是从第 6 列开始的总共 24005 列文件中提取每 800 列,所以我需要一个循环)
在下面更简单的情况下,从输入文件中提取每 3 列(字段),以第 2 列为起点。
例如,如果输入文件如下所示:
aa 1 2 3 4 5 6 7 8 9
bb 1 2 3 4 5 6 7 8 9
cc 1 2 3 4 5 6 7 8 9
dd 1 2 3 4 5 6 7 8 9
我希望输出看起来像这样: 输出文件_1:
1 2 3
1 2 3
1 2 3
1 2 3
输出文件_2:
4 5 6
4 5 6
4 5 6
4 5 6
输出文件_3:
7 8 9
7 8 9
7 8 9
7 8 9
我试过了,但它不起作用:
awk 'for(i=2;i<=10;i+a) {{printf "%s ",$i};a=3}' <inputfile>
它给了我语法错误,我修复的越多,出现的问题就越多。
我也尝试了 linux 命令 cut,但是当我处理大文件时,这似乎毫不费力。而且我想知道 cut 是否会像 awk 一样对每 3 个字段执行一次循环剪切。
有人可以帮我解决这个问题并给出一个快速的解释吗?提前致谢。
【问题讨论】: