Использование Bash For Loop для поиска файла для уникальной строки - PullRequest
0 голосов
/ 10 января 2012

У меня есть файл sortedfile.txt со списком имен файлов. Я ищу для поиска другой файл, ngfilelist.txt содержащий список файлов для всех дубликатов файлов в sortedfile.txt.

Я использую эту команду

 for X in `uniq -d ~/Desktop/sortedfiles.txt`; do grep "$X" ~/Desktop/ngfilelist.txt; done

Что я должен исправить в этом?

Ответы [ 2 ]

3 голосов
/ 10 января 2012

Я бы сделал что-то вроде этого:

cat sortedfiles.txt | xargs -n1 -i{} grep '^{}$' ngfilelist.txt

Вместо использования цикла for я считаю, что проще использовать xargs для запуска grep для каждой строки в sortedfiles.txtпротив ngfilelist.txt.Вывод представляет собой список имен файлов, найденных в обоих файлах.

Обратите внимание, что ^ и $ используются для сопоставления только полных имен файлов, поскольку, возможно, частичное совпадение не считается действительным результатом вашей проблемы.

0 голосов
/ 11 января 2012

Это может работать для вас:

 awk 'FNR==NR{f[$1]++;next}$1 in f && f[$1]>1{print}' sortedfiles.txt ngfilelist.txt
...