【发布时间】:2019-08-01 13:35:18
【问题描述】:
我正在尝试将第六列从一堆文件中复制并粘贴到一个文件中,并将每一列粘贴在单独的列中(而不是一个接一个地粘贴在一个列中。)
我尝试了这段代码,但它只能部分工作,因为它只复制和粘贴每列的 50 行而不是总数 114
awk 'FNR==1{f++}{a[f,FNR]=$6}END{for(x=1;x<=FNR;x++){for(y=1;y<ARGC;y++)printf("%s ",a[y,x]);print ""}}' *.label > fname.txt
【问题讨论】:
-
awk 'FNR==1{f++}{a[f,FNR]=$6}END{for(x=1;x fname.txt
-
使用edit按钮更新您的问题,不要在其下的cmets中添加代码或其他任何内容。此外,请通过缩进 4 个空格来格式化您的代码(或使用编辑器
{}按钮)并提供简洁、可测试的示例输入和预期输出(在示例输入、输出和代码中使用 4 或 5 列,而不是 115) . -
哇,这段代码难以辨认,但给我留下了深刻的印象:当我运行它时,它完全按照您的描述执行,获取了我创建的测试文件中的所有行。您可能需要指定您的 awk 版本和您运行的平台,以防万一。
-
哦,我刚刚注意到,只要最后一个文件到达最后一行,它就会停止。你的文件有不同的行数吗?所以在我看来你需要
max{FNR from each file}而不是FNR,我现在收集的是最后一个文件读取的最后行号。
标签: bash awk multiple-columns