我现在有一个脚本,它将文件列表放在两个单独的数组中:
首先,我从一个 ZIP 文件中获取一个文件列表并填写FIRST_Array()
它。其次,我从 ZIP 文件中的控制文件中获取文件列表并填写SECOND_Array()
它
while read length date time filename
do
FIRST_Array+=( "$filename" )
echo "$filename" >> FIRST.report.out
done < <(/usr/bin/unzip -qql AAA.ZIP |sort -g -k12 -t~)
第三,我像这样比较两个数组:
diff -q <(printf "%s\n" "${FIRST_Array[@]}") <(printf "%s\n" "${SECOND_Array[@]}") |wc -l
我可以说这是 Diff
失败的,因为我将每个数组输出到文件:FIRST.report.out
并且SECOND.report.out
根本没有正确排序。
1) FIRST.report.out(ZIP 文件中的内容)
JGS-Memphis~AT1~Pre-Test~X-BanhT~JGMDTV387~6~P~1100~HR24-500~033072053326~20120808~240914.XML
JGS-Memphis~PRE~DTV_PREP~X-GuinE~JGMDTV069~6~P~1100~H24-700~033081107519~20120808~240914.XML
JGS-Memphis~PRE~DTV_PREP~X-MooreBe~JGM98745~40~P~1100~H21-200~029264526103~20120808~240914.XML
JGS-Memphis~FUN~Pre-Test~X-RossA~jgmdtv168~2~P~1100~H21-200~029415655926~20120808~240914.XML
2) SECOND.report.out (ZIP 的控制文件里面有什么)
JGS-Memphis~AT1~Pre-Test~X-BanhT~JGMDTV387~6~P~1100~HR24-500~033072053326~20120808~240914.XML
JGS-Memphis~FUN~Pre-Test~X-RossA~jgmdtv168~2~P~1100~H21-200~029415655926~20120808~240914.XML
JGS-Memphis~PRE~DTV_PREP~X-GuinE~JGMDTV069~6~P~1100~H24-700~033081107519~20120808~240914.XML
JGS-Memphis~PRE~DTV_PREP~X-MooreBe~JGM98745~40~P~1100~H21-200~029264526103~20120808~240914.XML
使用sort -k12 -t~
有道理,因为~
是文件日期字段的分隔符(第 12 位)。但它并不能始终如一地工作。添加-g
没有任何区别。
当我的脚本处理更大的 ZIP 文件时,排序会更糟。为什么 sort -k 不能一直工作?如何对两个数组进行排序?