[英]how to gzip a file using cut to exclude the path of the filename from a log file
我有一個日志文件,該文件將打印批處理文件是否成功處理。 第三列顯示狀態字母“ 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
我正在嘗試將狀態為“ F”的所有批處理文件gzip壓縮到備份目錄,同時保持從第5列提取的相同文件名,而沒有路徑,只是文件名。
碼:
while read -r f1 f2 f3 f4 f5 f6 f7 ; do
if [ "${f3}" = "F" ] ; then
gzip "${f6}" > /backup/batch_backups/"${f6}" cut -c 17-30
else
echo "No Error!"
fi
done < batch.log
cut -c 17-30
應該僅提取文件名(不包括文件路徑)。
例如,batch_backups使用上面的日志文件中的示例輸出應具有mnop.dat.gz。
捕獲輸出:
gzip "${f6}" > /backup/batch_backups/"$(cut -c 17-30 <<<"${f6}")".gz
但是我認為這比您嘗試做的要好(XY問題),因為您嘗試從完整路徑獲取文件名:
gzip "${f6}" > /backup/batch_backups/"$(basename "${f6}")".gz
您也可以使用${f6##*/}
代替basename
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.