我有多个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
进行粘贴,但它不起作用。
答案 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