2012-03-20 1 views
4

Будучи новичком в linux, мне трудно понять некоторые элементарные аспекты поиска текста.XARGS, GREP и GNU parallel

Я хочу выполнить следующее: У меня есть файл со списком absolutepaths для определенного пути.

  1. Я хочу, чтобы пройти через этот список файлов и Grep для конкретного шаблона
  2. Если шаблон найден в этом файле, я хотел бы перенаправить его на другой выходной файл.
  3. Поскольку эти файлы распространены в NFS, я хотел бы ускорить поиск с использованием GNU-параллели.

So..what я сделал следующим образом:

cat filepaths|xargs -iSomePath echo grep -Pl '\d+,\d+,\d+,\d+' \"SomePath\"> FoundPatternsInFile.out| parallel -v -j 30 

Когда я запускаю эту команду, я получаю следующее сообщение об ошибке несколько раз:

grep: "/path/to/file/name": No such file or directory 

Файл и путь существует , Может кто-нибудь указать, что я могу делать неправильно с xargs и grep?

Благодаря

+0

Я думаю, что я понял, что может происходить здесь, я включаю переменную SomePath в кавычки. Греп не смог найти путь, заключенный в кавычки. Удаление кавычек и запуск командной строки catpath | xargs -iSomePath echo grep -Pl '\ d +, \ d +, \ d +, \ d +' SomePath> FoundPatternsInFile.out | Параллель -v -j 30, похоже, решила проблему. –

+2

FYI - 'xargs

ответ

3
cat filepaths | parallel -j 30 grep -Pl '\d+,\d+,\d+,\d+' {} > FoundPatternsInFile.out 

В этом случае вы можете даже выйти из {}.

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

  • Нет связанных вопросов^_^