如何将awk输出到制表符分隔文件中,每次将两行合并为一行?

时间:2017-07-05 21:15:37

标签: bash awk

我有多个gz格式的文件,并使用这个脚本计算每个文件中的行数,并为每个文件打印1/4行:

for file in *.gz;
do echo $file;
gunzip -c $file | wc -l | awk '{print, $1/4}';
done

STDOUT:

AB.gz
12
CD.gz
4

如何将awk的输出管道输入制表符分隔文件,例如每次合并两行:

AB.gz 12
CD.gz 4

我尝试通过在脚本中管道| paste -sd '\t' > output.txt进行粘贴,但它不起作用。

2 个答案:

答案 0 :(得分:1)

您可以使用以下脚本:

for file in *.gz; do
   gzcat "$file" | awk -v fn="$file" -v OFS='\t' 'END{print fn, int(NR/4)}'
done

答案 1 :(得分:1)

不要在文件后回显换行符:

for file in *.gz;
do
   printf "%s " "${file}"
   gunzip -c $file | wc -l | awk '{print, $1/4}';
done