【发布时间】:2017-08-29 06:24:40
【问题描述】:
我已经在这个问题上苦苦挣扎了很长一段时间(请注意,我不是一个非常好的 bash 编码器,更不用说 awk)。 我有大约 10000 个文件,每个文件的格式都相同(也很重,大约 3Mb)。我想获取每个文件的第三行并将它们并排粘贴到一个新文件中。
我找到了许多使用 paste、awk 或 cut 的解决方案,但在使用通配符时它们都不起作用。例如,
paste <(awk '{print $3}' file1 ) <(awk '{print $3}' file2 ) <(awk '{print $3}' file3) > output
如果我只有 3 个文件会很好,但我不会为其中的 10000 个文件输入。所以我尝试了使用通配符:
paste <(awk '{print $3}' file* ) > output
它确实粘贴了第 3 行,但在一行中。我尝试了其他一些代码,但最终总是得到相同的结果。有没有办法使用通配符将它们并排粘贴?
非常感谢您的帮助!
巴蒂斯特 G.
编辑 1:在 schorsch312 的帮助下,我找到了一个可行的解决方案 为了我。而不是获取列并将它们并排粘贴, 我将每一列打印为一行并将它们一个接一个地添加:
对于我在
ls files*;做 awk '{printf $3i" "}END{print}' $i >> 输出完成它可以工作,但 1/ 速度很慢,2/ 这不是我问的 在标题中,因为我的输出文件是“转置”。它真的没有 对我来说很重要,因为它只是浮动,我可以稍后转置它 如果需要,使用 python。
【问题讨论】: