我一直在努力编写一个代码,用于从输入文件中提取每 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
我希望输出看起来像这样: output_file_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 个字段进行一次循环剪切。
有人可以帮我解决这个问题并给出一个快速的解释吗?提前致谢。