且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

bash删除具有保留顺序的键值重复项

更新时间:2022-11-13 23:34:42

$ cat tst.awk
BEGIN { FS=OFS="=" }
{ key=$1; val=$2 }
NR==FNR {
    keys[++numKeys] = key
    key2val[key] = val
    next
}
{
    if ( key in key2val ) {
        val = key2val[key]
        delete key2val[key]
    }
    print key, val
}
END {
    for (keyNr=1; keyNr<=numKeys; keyNr++) {
        key = keys[keyNr]
        if (key in key2val) {
            print key, key2val[key]
        }
    }
}

$ awk -f tst.awk file2 file1
xab=p11
aab=p17
aac=p23
xac=p25
yab=p16
yyc=p22