2016-04-19 3 views
-1

у меня есть два файла
AWK сравнить два файла и распечатать все совпадения и не совпадения с повторением на обоих файлах

file1 
1,DAVID 
22,JACK 
31,SHARON 
46,SUSAN 

file2 
770,JACKSON 
779,DAVID 
776,SHARON 
775,DAVID 
771,SHARON 
777,SUSAN 

Я хочу сравнить file2 со спичками в файле 1
file2 может содержать более одного одноименного имени в столбце 2, которое
соответствует colum2 в файле1
выход Мне нужно, как показано ниже

779,1 
775,1 
771,31 
777,46 

попытались с примерами, приведенными в StackOverflow, но я не получаю любой выходной

пример

awk -F, 'NR==FNR{a[$1]=$2;}NR>FNR{if (a[$1]==$2)print $1,${a[$2]}' file1 file2 
+0

Добро пожаловать на SO, пожалуйста, читайте здесь - http://stackoverflow.com/help/how-to-ask – JayIsTooCommon

+0

Посмотрите при использовании '$ 1' и' $ 2'. –

ответ

0

Попробуйте AWK!

BEGIN { 
     FS=OFS=","; 
    } 
    FNR==NR{ # make sure we are reading from file1 

     N[$2]=$1; # Asociative array, save values from file1 
     next; # to force start reading file2 
    } 
    { # start reading from file2 

     for (var in N) # for each $2 in array N 
         # variable "var" is the index of the array N 
     { 
      if (var == $2) # if $2 from file1 match $2 from file2 
      { 
       print $1,N[var]; 
      } 
     } 
    } 

AWK -f script.awk file1.txt file2.txt

779,1 776,31 775,1 771,31 777,46

Есть ли какой-либо причине для результата 776.31 не появится в вашем выходе?

+0

для этого AWK файла я получаю этот выход – benson

+0

771,1 775,1 776,1 777,1 779,1 – benson

+0

@benson Я редактировал ответ. – Firefly

0

Вы можете сделать это без AWK, при сортировке и только присоединиться:

join -t , -1 2 -2 2 -o 2.1 1.1 <(sort -t , -k 2 file1) <(sort -t , -k 2 file2) 
# ^^^ ^---- select which fields to display ^^
#  | | '--------- field in common for file2   | | 
#  | '-------------- field in common for file1   | | 
#  '------------------- field separator --------------------' | 
#       field used to sort the file -------------' 
+0

Это работает отлично, не могли бы вы объяснить – benson

+0

@benson: Я добавил описание параметров команды. –

+0

спасибо Казимир, теперь я хорош для следующего шага – benson

Смежные вопросы