未压缩的数据具有相同的行数和列数。
所有文件都位于相同的目录中。
有没有可能从每个文件中取出每5-6列,并将它们粘贴在一起,而不必转储临时文件?
就像这样
for i in *.gz
do
gunzip -c $i |cut -f5-6 >$i.tmp;
done
paste *.tmp谢谢
发布于 2011-10-26 05:18:37
您可以创建命令行来评估和使用bash进程替换,以避免临时文件:
command=paste
for i in *.gz; do
command="$command <(gzip -cd $i | cut -f5-6)"
done
eval $command发布于 2011-10-26 05:44:44
for f in *.gz ; do
printf '_fn %s\n' "$f"
gunzip -c "$f"
done |
awk 'END {
for (i = 0; ++i <= m;)
for (j = 0; ++j <= fc;)
printf "%s", (d[j, i] (j < fc ? OFS : RS))
}
$1 == "_fn" {
fn = $2; fnr = x; ++fc
next
}
{
d[fc, ++fnr] = $5 OFS $6
fnr > m && m = fnr
}' OFS='\t'https://stackoverflow.com/questions/7895921
复制相似问题