Я хочу обновить file1 на основе file2. Если какая-либо строка является новой в файле2, она должна быть добавлена в файл1. Если какая-либо строка из файла2 уже находится в файле1, обновите эту строку с помощью строки из файла2, если время больше в файле2.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 - уникальный результат.
- Добавление нового значения: последнее второе поле для значения «1111111104» в
file2
взято, которое является более новым (201312051016), тогда старое значение (201312051014) на основе столбца даты (3-е поле). - Обновить существующее значение: обновлено «1111111102» с более новым значением на основе даты в третьем столбце
- file1 очень БОЛЬШОЙ, тогда как файл2 имеет только 5-10 записей.
- строка с 2-м полем «1111111101» не нуждается в обновлении, потому что ее запись в
file1
уже имеет самую последнюю дату «201312051014» по сравнению с новой датой «201312041013» вfile2
.
Я не пробовал много на это, потому что это действительно имеет сложное условие для меня как новичка ..
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. –