Vlookup с помощью команды awk -2 и печать в желаемой форме - PullRequest
0 голосов
/ 17 сентября 2018

На моем сервере Linux есть два файла:

file_1

2018-09-01-00:00:03|911234567899|919535144580
2018-09-01-00:00:06|916724367238|919535144580
2018-09-01-00:00:07|911673617378|919535144580
2018-09-01-00:00:09|916721377382|919535144580
2018-09-01-00:00:13|910933214512|919535144580
2018-09-01-00:00:13|919777823434|919535144580
2018-09-01-00:00:15|919562343456|919535144580
2018-09-01-00:00:16|918867558865|919535144580

file_2

S NO.,Column1,Column2,Column3
72070,9112345,TGM,AP
72071,9167243,BGM,MP
72072,9116736,AGM,KN
72073,9167213,TGM,AP

Ожидаемый результат:

911234567899,TGM,AP
916724367238,BGM,MP
911673617378,AGM,KN
916721377382,TGM,AP
910933214512,NA,NA

Мне нужна однострочная команда, использующая awk или сценарий bash, который должен проверять столбец1 из File_2 и проверять его на первые 6 цифр 2-го столбца File_1 и выводить ожидаемый результат.

1 Ответ

0 голосов
/ 17 сентября 2018

Не совсем уверен, поскольку показанный вами вывод не совсем совпадает с вашим описанием, не могли бы вы попробовать следующее.

awk 'FNR==NR{a[$2]=$3","$4;next} {$2=substr($2,1,7) in a?$2","a[substr($2,1,7)]:$2",NA,NA";print $2}' FS="," Input_file_2  FS="|"  Input_file_1

ИЛИ добавление формы решения, не относящейся к одной линии, тоже сейчас.

awk '
FNR==NR{
  a[$2]=$3","$4
  next
}
{
  $2=substr($2,1,7) in a?$2","a[substr($2,1,7)]:$2",NA,NA"
  print $2
}
' FS="," File_2  FS="|" File_1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...