我想更新文件1基於文件2。如果file2中有任何新行,則應將其添加到file1中。如果file2中的任何一行已經存在於file1中,那麼如果file2中的時間更長,那麼使用file2中的行更新該行。awk |添加新行或更新文件中的現有行
file1的
DL,1111111100,201312051013,val,FIX01,OptIn,N,Ext1,Ext2
DL,1111111101,201312051014,val,FIX01,OptIn,Y,Ext1,Ext2
DL,1111111102,201312051015,val,FIX01,OptIn,Y,Ext1,Ext2
DL,1111111103,201312051016,val,FIX01,OptIn,N,Ext1,Ext2
file2的
DL,1111111101,201312041013,val,FIX02,OptIn,N,Ext1,Ext2
DL,1111111102,201312051016,val,FIX02,OptIn,N,Ext1,Ext2
DL,1111111102,201312051017,val,FIX02,OptIn,N,Ext1,Ext2
DL,1111111104,201312051014,val,FIX01,OptIn,Y,Ext1,Ext2
DL,1111111104,201312051016,val,FIX02,OptIn,Y,Ext1,Ext2
newfile1
DL,1111111100,201312051013,val,FIX01,OptIn,N,Ext1,Ext2
DL,1111111101,201312051014,val,FIX01,OptIn,Y,Ext1,Ext2
DL,1111111102,201312051017,val,FIX02,OptIn,N,Ext1,Ext2
DL,1111111103,201312051016,val,FIX01,OptIn,N,Ext1,Ext2
DL,1111111104,201312051016,val,FIX02,OptIn,Y,Ext1,Ext2
注:
- 第二場建議立即進行刪除d在輸出中是唯一的。
- 添加新值:根據日期列(第3字段)取
file2
中值爲「1111111104」的最新第2字段,其爲更新(201312051016),然後是舊值(201312051014)。 - 更新現有值:根據第3列中的日期更新「1111111102」
- file1非常大,而file2只有5-10個條目。
- 行與第二個字段「1111111101」不需要更新,因爲它在
file1
中的條目已經具有最新日期「201312051014」與在file2
中的新日期「201312041013」相比較。
我沒有嘗試過很多關於這個,因爲它真的有,我作爲初學者複雜條件..
BEGIN { FS = OFS = "," }
FNR == NR {
m=$2;
a[m] = $0;
next
}
{
if($2 in a)
{
split(a[$2],datetime,",")
if($3>datetime[3])
print $0;
else
print a[$2]"Old time"
}
else print $0"NOMATCH";
delete a[$2];
}
什麼問題?我不知道你在努力達到什麼目的。嘗試解釋你想要的而不是僅僅發佈一些文件和無法理解的筆記 - 然後有人會提供幫助。 –
我對此表示歉意,如果我無法正確解釋它。現在我已經添加了小的摘要。讓我知道如果我需要解釋mote。 –