繁体   English   中英

从命令行将多个文件中的列提取到单个输出文件中

[英]Extracting columns from multiple files into a single output file from the command line

假设我有一个制表符分隔的数据文件,其中包含10列。 例如,使用awk可以轻松提取第7列,并将其输出到单独的文件中。 (例如,请参阅此问题 。)

如果我有5个这样的数据文件,并且我想从每个文件中提取第7列并创建一个包含5个数据列的新文件,每个输入文件的第7列一个文件,该怎么办? 可以使用awk和其他命令从命令行完成此操作吗?

还是我应该编写一个Python脚本来处理它?

awk '{a[FNR] = a[FNR]" " $7}END{for(i=0;i<FNR;i++) print a[i]}'

a数组保存来自不同文件的每一行

当前输入文件中读取的FNR记录数,在每个文件开始时设置为零。

END{for(i=0;i<FNR;i++) print a[i]}在文件的END上打印数组a的内容

如果数据足够小以将其全部存储在内存中,那么这应该起作用:

awk '{out[FNR]=out[FNR] (out[FNR]?OFS:"") $7; max=(FNR>max)?FNR:max} END {for (i=1; i<=max; i++) {print out[i]}}' file1 file2 file3 file4 file5

如果不是,那么您将需要一些可以在文件流中寻找或从多个文件中读取一行的奇特工具(带有N个read调用的shell循环可以做到这一点)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM