сопоставление образцов awk и файлы слияния

У меня 3 файла 1.csv и 2.csv и 3.csv

1.csv

TELECOM_DEVELOPMENT_AFGHANISTAN_COMPANY,AFGHANISTAN,Alphanumeric_A_MSISDN_blocking,1 CABLE&WIRELESS_BARBADOS,BARBADOS,Alphanumeric_A_MSISDN_blocking,791 SIMINN_ICELAND_TELECOM,ICELAND,Alphanumeric_A_MSISDN_blocking,109373 CABLE&WIRELESS_SEYCHELLES,SEYCHELLES,Alphanumeric_A_MSISDN_blocking,2 CABLE&WIRELESS_JAMAICA,JAMAICA,Alphanumeric_A_MSISDN_blocking,85 

2.csv

 SIMINN_ICELAND_TELECOM,ICELAND,SPAM_CHAIN_SMS_REJECT(Spam_Detection_and_Blocking),7795 CABLE&WIRELESS_SEYCHELLES,SEYCHELLES,SPAM_CHAIN_SMS_REJECT(Spam_Detection_and_Blocking),638 

3.csv:

 TELECOM_DEVELOPMENT_AFGHANISTAN_COMPANY,AFGHANISTAN,Calling_Party_Address_Blocking,79 CABLE&WIRELESS_BARBADOS,BARBADOS,Calling_Party_Address_Blocking,30 MOBILKOM_LIECHTENSTEIN,LIECHTENSTEIN,Calling_Party_Address_Blocking,6 SYNIVERSE_ANSI,UNITED_STATES,Calling_Party_Address_Blocking,12 

Я хочу объединить файлы, чтобы он распечатывал выходной файл, как показано ниже.

 TELECOM_DEVELOPMENT_AFGHANISTAN_COMPANY,AFGHANISTAN,Alphanumeric_A_MSISDN_blocking,1,NA,NA,Calling_Party_Address_Blocking,79 CABLE&WIRELESS_BARBADOS,BARBADOS,Alphanumeric_A_MSISDN_blocking,791,NA,NA,Calling_Party_Address_Blocking,30 SIMINN_ICELAND_TELECOM,ICELAND,Alphanumeric_A_MSISDN_blocking,109373,SPAM_CHAIN_SMS_REJECT(Spam_Detection_and_Blocking),7795,NA,NA CABLE&WIRELESS_SEYCHELLES,SEYCHELLES,Alphanumeric_A_MSISDN_blocking,2,SPAM_CHAIN_SMS_REJECT(Spam_Detection_and_Blocking),638,NA,NA CABLE&WIRELESS_JAMAICA,JAMAICA,Alphanumeric_A_MSISDN_blocking,85,NA,NA,NA,NA MOBILKOM_LIECHTENSTEIN,LIECHTENSTEIN,NA,NA,NA,NA,Calling_Party_Address_Blocking,6 SYNIVERSE_ANSI,UNITED_STATES,NA,NA,NA,NA,Calling_Party_Address_Blocking,12 

  • Как я могу объединить информацию из трех файлов для создания четвертой?
  • Как работают несколько блоков в AWK?
  • Использование awk для обработки вывода ls с пробелами в именах файлов / пути
  • Объединение строк с одинаковым полем
  • замените строку строки 6 после сопоставления строки
  • awk расширенное сопоставление шаблонов (сопоставление шаблонов внедрения в действиях для уже сопоставленных строк)
  • Организация трехмерных данных с помощью awk / sed / perl
  • разбиение файла на номер столбца
  • 3 Solutions collect form web for “сопоставление образцов awk и файлы слияния”

    Если вы не возражаете против порядка вывода, вот решение perl :

     $ perl -F',' -anle ' push @{$h{$F[0].",".$F[1]}{$ARGV}}, @F[2..$#F]; push @file, $ARGV if eof; END { for $k (keys %h) { for (sort {$a <=> $b} @file) { if (defined($h{$k}{$_})) { push @tmp, @{$h{$k}{$_}}; } else { push @tmp, qw(NA NA); } } print join ",",($k,@tmp); @tmp=(); } } ' 1.csv 2.csv 3.csv MOBILKOM_LIECHTENSTEIN,LIECHTENSTEIN,NA,NA,NA,NA,Calling_Party_Address_Blocking,6 CABLE&WIRELESS_SEYCHELLES,SEYCHELLES,Alphanumeric_A_MSISDN_blocking,2,SPAM_CHAIN_SMS_REJECT(Spam_Detection_and_Blocking),638,NA,NA CABLE&WIRELESS_BARBADOS,BARBADOS,Alphanumeric_A_MSISDN_blocking,791,NA,NA,Calling_Party_Address_Blocking,30 SIMINN_ICELAND_TELECOM,ICELAND,Alphanumeric_A_MSISDN_blocking,109373,SPAM_CHAIN_SMS_REJECT(Spam_Detection_and_Blocking),7795,NA,NA CABLE&WIRELESS_JAMAICA,JAMAICA,Alphanumeric_A_MSISDN_blocking,85,NA,NA,NA,NA SYNIVERSE_ANSI,UNITED_STATES,NA,NA,NA,NA,Calling_Party_Address_Blocking,12 TELECOM_DEVELOPMENT_AFGHANISTAN_COMPANY,AFGHANISTAN,Alphanumeric_A_MSISDN_blocking,1,NA,NA,Calling_Party_Address_Blocking,79 

    В awk :

     #!/usr/bin/awk -f BEGIN { FS=","; } { k=$1 if (k in ar) { for (i = 3; i <= NF; i++) ar[k] = ar[k] "," $i } else { ar[k] = $0; } } END { for (j in ar) print ar[j] } 

    Сохраните как merge.awk и сделайте его исполняемым с помощью chmod +x merge.awk .

    Он (должен) выводить:

     CABLE&WIRELESS_SEYCHELLES,SEYCHELLES,Alphanumeric_A_MSISDN_blocking,2,SPAM_CHAIN_SMS_REJECT(Spam_Detection_and_Blocking),638 SYNIVERSE_ANSI,UNITED_STATES,Calling_Party_Address_Blocking,12 MOBILKOM_LIECHTENSTEIN,LIECHTENSTEIN,Calling_Party_Address_Blocking,6 CABLE&WIRELESS_JAMAICA,JAMAICA,Alphanumeric_A_MSISDN_blocking,85 SIMINN_ICELAND_TELECOM,ICELAND,Alphanumeric_A_MSISDN_blocking,109373,SPAM_CHAIN_SMS_REJECT(Spam_Detection_and_Blocking),7795 TELECOM_DEVELOPMENT_AFGHANISTAN_COMPANY,AFGHANISTAN,Alphanumeric_A_MSISDN_blocking,1,Calling_Party_Address_Blocking,79 CABLE&WIRELESS_BARBADOS,BARBADOS,Alphanumeric_A_MSISDN_blocking,791,Calling_Party_Address_Blocking,30 

    При запуске как merge.awk 1.csv 2.csv 3.csv или даже merge.awk *.csv .

     awk -F ',' ' FILENAME == ARGV[1] { a[++n] = ($1 FS $2); ar1[a[n]]=($3 FS $4); next} FILENAME == ARGV[2] { if(!(($1 FS $2) in ar1)) {a[++n] = ($1 FS $2)}; ar2[$1 FS $2]=($3 FS $4); next} FILENAME == ARGV[3] { if(!(($1 FS $2) in ar1)) {a[++n] = ($1 FS $2)}; ar3[$1 FS $2]=($3 FS $4); next} END {for(i=1; i<=n; i++) {if(!(a[i] in ar1)) ar1[a[i]] = ("NA,NA") if(!(a[i] in ar2)) ar2[a[i]] = ("NA,NA") if(!(a[i] in ar3)) ar3[a[i]] = ("NA,NA") printf "%s,%s,%s,%s\n", a[i], ar1[a[i]], ar2[a[i]], ar3[a[i]]}}' 1.csv 2.csv 3.csv 

    Вывод указанной выше команды

     TELECOM_DEVELOPMENT_AFGHANISTAN_COMPANY,AFGHANISTAN,Alphanumeric_A_MSISDN_blocking,1,NA,NA,Calling_Party_Address_Blocking,79 CABLE&WIRELESS_BARBADOS,BARBADOS,Alphanumeric_A_MSISDN_blocking,791,NA,NA,Calling_Party_Address_Blocking,30 SIMINN_ICELAND_TELECOM,ICELAND,Alphanumeric_A_MSISDN_blocking,109373,SPAM_CHAIN_SMS_REJECT(Spam_Detection_and_Blocking),7795,NA,NA CABLE&WIRELESS_SEYCHELLES,SEYCHELLES,Alphanumeric_A_MSISDN_blocking,2,SPAM_CHAIN_SMS_REJECT(Spam_Detection_and_Blocking),638,NA,NA CABLE&WIRELESS_JAMAICA,JAMAICA,Alphanumeric_A_MSISDN_blocking,85,NA,NA,NA,NA MOBILKOM_LIECHTENSTEIN,LIECHTENSTEIN,NA,NA,NA,NA,Calling_Party_Address_Blocking,6 SYNIVERSE_ANSI,UNITED_STATES,NA,NA,NA,NA,Calling_Party_Address_Blocking,12 
    Interesting Posts

    Расширение скобки Bash {a..Z}

    Открыть URL из терминала в хроме

    Расширение «RANDR» отсутствует на xvfb

    Объединение двух интернет-соединений с двух сетевых интерфейсов для получения двойной скорости

    Как определить, находится ли окно в фокусе?

    Как написать сценарии LSB init.d, которые могут запускать несколько экземпляров одной и той же службы?

    Список сценариев (местоположение), которые запускаются автоматически, и когда?

    Возможно ли создать динамический контент при операции чтения файлов?

    Отладка сетевой проблемы Solaris

    KTorrent: перемещение данных в сценарии оболочки

    Что выбрать – команды BSD или Unix, если они доступны?

    CentOS 6.5 необходимо вручную добавить маршрут по умолчанию

    Email Отправлено через root@domain.com, несмотря на изменение / etc / aliases

    X эквивалент ключа прозрачности Windows

    Как продолжить, когда мои сообщения о неправильном функционировании компонента gnome не соответствуют ответам в соответствующем списке рассылки

    Linux и Unix - лучшая ОС в мире.