合并具有最新更新记录的两个文件

时间:2014-04-03 14:40:46

标签: awk

我有两个文本文件A.txt& AA.txt,两者都有相同的标题 我需要通过合并这两个来创建文件C.如果文件包含相同的记录,并且更新日期或创建日期有一些更改,那么它应该只采用最近更新的记录。

我用过

awk -F"|" '!a[$1]++' /export/home/Vip/A* > C.txt 

合并以A开头的文件 我怎样才能获得最新的更新记录。

如果第5列是update_date。我该怎么做才能获得最近更新的记录

1 个答案:

答案 0 :(得分:1)

以下合并一组文件,如果$1的值在某些或所有文件中相同,则会选择值$5的最大记录:

 awk -f a.awk firstRun=1 file1 file2 firstRun=0 file1 file2

其中a.awk是:

BEGIN {FS="|"}
firstRun {
    a[$1]++
    if (a[$1]==1) {
        c[$1]=$5; b[$1]=FILENAME
    }
    else {
        if ($5> c[$1])
            b[$1]=FILENAME
    }
    next
}
b[$1]==FILENAME

对于示例文件:

$ cat file1
1|2|3|4|5
6|7|8|9|10
11|12|13|14|15

$ cat file2
1|2|3|4|6
21|22|23|24|25
11|12|13|14|9

它给出了输出:

6|7|8|9|10
11|12|13|14|15
1|2|3|4|6
21|22|23|24|25