如果批处理文件成功处理,我会打印一个日志文件。第3列显示失败的状态字母“F”或完成的“C”。第5列显示完整路径和批处理文件名。
批处理文件输出示例
392 02/04/2018:2:00 c 4444 /batchprocessing/abc.dat
444 02/04/2018:3:00 F 4442 /batchprocessing/mnop.dat
3333 02/04/2018:4:00 c 2234 /batchprocessing/xyz.dat
我正在尝试从名为batch_status.log的日志文件第3列中压缩第5列中状态为“F”的所有文件
这就是我的想法:
cat batch_status.log | awk '{if ($3 == "F") gunzip -c name_of_file_from_5th_column.dat > /backup/batchfilebackups; else print "No Error";}'
答案 0 :(得分:0)
我会在shell中使用while循环:
#!/bin/bash
while read -r f1 f2 f3 f4 f5 ; do
if [ "${f3}" = "F" ] ; then
gunzip -c "${f5}" >> /backup/batchfilebackups
else
# Whatever that means ...
echo "No Error!"
fi
done < batch_status.log
答案 1 :(得分:0)
首先你在这里遇到问题,gunzip
用于解压缩而不是压缩,在这种情况下你应该使用gzip
...你没有指定,但我认为你想要压缩文件...使用以下命令:
for i in $(cat batch_status.log | awk '{if ($3 == "F") print $5}'); do cat $i >> backup; done; gzip backup