У меня есть два CSV-файла:

Это CSV1:

11, The Sun Still Shines in Reading, 64312, 464566
13, You and Me Together Again London, 564564, 131355
12, What's the Story Now Your Gone, 4545646, 1124545
17, Hello I love you, 456899, 1259898

Это CSV2:

69, The Sun Shines, 6464, 52364
12, Tell me your name, 56456, 21345
17, From London to New York, 897944, 234655
97, Reading Still Shines, 545464, 16748967

У меня есть этот код, который позволяет сопоставить названия (которые находятся в поле 2).

cat $csv1 |cut -d, -f2 | while read p; do
  grep -i "$p" $csv2
  if [ $? -eq 0 ];then
    grep -i "$p" $csv1
  fi
done

На данный момент этот код просматривает каждую строку в csv1, и если в csv2 есть строка с соответствующим заголовком, то она печатает соответствующие строки вместе. Это работает очень хорошо.

Однако теперь я хотел бы адаптировать сценарий так, чтобы вместо поиска точного заголовка он проверял, совпадают ли 3 или более слов.

Таким образом, результат в случае данных CSV на этой странице будет:

11, The Sun Still Shines in Reading, 64312, 464566
69, The Sun Shines, 6464, 52364
97, Reading Still Shines, 545464, 16748967

Который состоит из строки из csv1 вверху, за которой следуют две строки из csv2, которые имеют 3 или более совпадающих слова в поле 2 (название). Как я могу указать количество подходящих слов?

0