需要你的帮助
我的文件如下。
04/22/2015 01:00 05/13/2015 8791 16736573 N Cumulative I 0 0 CAP1
04/21/2015 01:00 05/12/2015 8762 16733348 N Cumulative I 0 0 CAP2
04/20/2015 19:25 05/11/2015 421 397297 N Full Backup 0 0 CAP2
04/21/2015 20:01 05/12/2015 2 163 N User Backup 0 0 CAP07_MD_Arch
04/21/2015 20:01 05/12/2015 1 1184 N User Backup 0 0 CAP07_MD_Arch
04/21/2015 20:00 05/12/2015 0 0 N Full Backup 0 0 CAP2K_M_Arch
04/21/2015 18:00 05/12/2015 293393 48478527 N Full Backup 0 0 CAP2K_M_Arch
04/21/2015 21:00 05/12/2015 293393 48478527 N Full Backup 0 0 CAP2K_M_Arch
04/21/2015 01:01 05/12/2015 9249 17716144 N Cumulative I 0 0 CAP05_WP1
04/13/2015 17:26 05/14/2015 63524 36108021 N Full Backup 0 0 SID20
03/28/2015 12:00 04/28/2015 63491 35996931 N Full Backup 0 0 SID20
03/21/2015 12:00 04/28/2015 63491 35996931 N Full Backup 0 0 SID20
我上面有大量列表备份图像数据的文件,我打算成功收集LATEST"完全备份"所有客户。
因此请删除基于最后一列的重复项,并根据第一行(备份日期)显示最新的可用备份。
如下所示。
04/20/2015 19:25 05/11/2015 421 397297 N Full Backup 0 0 CAP2
04/21/2015 21:00 05/12/2015 293393 48478527 N Full Backup 0 0 CAP2K_M_Arch
04/13/2015 17:26 05/14/2015 63524 36108021 N Full Backup 0 0 SID20
请帮助我们。
提前致谢。
答案 0 :(得分:1)
鉴于您的数据似乎没有按日期时间顺序排列,并且您只对完整备份感兴趣,因此需要进行某种形式的过滤和排序,以确保文件中的最后一个是实际上最新的正确类型。此外,排序因美国日期格式而变得复杂,而不像yyyy-mm-dd
那样容易做。
以下脚本将执行此操作:
pax> for id in $(awk '$7=="Full"{print $NF}' inputFile | sort -u); do
...> awk -vX=$id '
...> $NF==X && $7=="Full" {
...> $1=substr($1,7,4)"-"substr($1,1,2)"-"substr($1,4,2);
...> print
...> }' inputFile | sort | tail -1
...> done
2015-04-13 17:26 05/14/2015 63524 36108021 N Full Backup 0 0 SID20
2015-04-20 19:25 05/11/2015 421 397297 N Full Backup 0 0 CAP2
2015-04-21 21:00 05/12/2015 293393 48478527 N Full Backup 0 0 CAP2K_M_Arch
for
语句根据每行的最后一列获取唯一 ID列表,然后迭代这些ID。 awk
确保我们只获得完整备份,然后打印出每行上的最后一个字段,sort -u
删除所有重复项。
为每个ID运行的内部行只是抓取所有完整备份行,其中最后一列是当前所需的ID值,对它们进行排序,使它们按升序日期/时间顺序排列,并打印出最后一行
答案 1 :(得分:0)
按日期顺序对输入进行排序,然后是awk one-liner:
cat INPUT_FILE | sort -t/ -k3.1,3.4 -k1 -k2 |
awk '/Full Backup/ { backup[$(11)]=$0 } END { for(x in backup) print backup[x] }'
通过输入迭代,存储数组中遇到的最新备份日期。