我在下面的格式文件1:在下面的格式用awk比较文件条目以及条件
14-02-2017
one 01/02/2017
two 31/01/2017
three 14/02/2017
four 01/02/2017
five 03/02/2017
six 01/01/2017
和file2:
11-02-2017
one 01/01/2017
two 31/01/2017
three 14/02/2017
four 11/01/2017
要求:我要复制,将文件2中提到的文件1从某个位置替换(或添加,如果需要的话)到文件2所在位置,其日期(以coulmn 2为单位)大于文件2中提到的日期。可以保证在任何情况下文件2都不会一个程序的日期大于文件1的日期(但可以相等)。此外,文件2中丢失的文件条目(但存在于文件1中)也应该被复制。
所以,在这种情况下,文件一,四,五,六必从某个位置的文件2位置复制,脚本执行
的awk -F”'“NR == FNR后{C [$ 1] ++;}旁边; C [$ 1]> 0' $ $ file2的文件1>共同
#文件1,列2 f1c2 =($(切-f2 -s $常见))
#文件2第2栏 f2c2 =($(cut -f2 -s $ file2))
for x in "${f1c2[@]}"
do
for y in "${f2c2[@]}"
do
if [[ $x >= $y ]]
then
//copy file pointed by field $1 in "common" to file2 path
break
fi
done
done
我正在考虑一种有效地使用awk本身的方式来执行比较任务来创建“common”文件。因此,文件“common”将包含文件1中的最新文件以及文件2中缺少的项目。按照这种方式,我只需要复制文件“common”中提到的所有文件,不需要担心。
I was was试图添加一些if内部块awk -F'''NR == FNR {c [$ 1] ++; next}; c [$ 1]> 0'$ file2 $ file1> common,但我无法弄清楚解决file1第2列和第2列第2列进行比较。
awk是强制性的吗? – mcoolive
不是真的,但我想保持一个干净的外观,没有太多的代码行 – user7083883
我理解正确,file1中的日期是当前的文件日期,而file2中的日期代表旧的情况,并且你在上面是某种形式或镜像或备份?如果是这样,可能你需要的只是一个具有适当参数的'rsync'调用。让我们知道... – Dario