zcat труба в grep - PullRequest
       31

zcat труба в grep

3 голосов
/ 11 марта 2009
ls -ltr|grep 'Mar  4'| awk '{print $9 }'|zcat -fq |grep  12345

Я хочу найти все файлы, модифицированные в определенный день, а затем zcat их и найти в числовой строке поля.

вышеупомянутое не работает, потому что оно ищет в имени файла строку, а не сам файл.

Любая помощь?

M

Ответы [ 4 ]

2 голосов
/ 11 марта 2009

Используйте xargs, чтобы запустить grep для имен файлов, выводимых awk:

ls -ltr | grep 'Mar 4' | awk '{print 9}' | xargs zcat -fq | grep 12345

Или, я думаю, запустить остальную часть канала из самого awk.

1 голос
/ 11 марта 2009

Если я правильно прочитал вашу командную строку, это zcat, который пытается распаковать имена файлов вместо их содержимого. Используйте xargs для решения этой проблемы:

ls -ltr|grep 'Mar  4'| awk '{print $9 }'|xargs zcat -fq |grep  12345
1 голос
/ 11 марта 2009

Попробуйте использовать find вместо этого. И / или xargs.

0 голосов
/ 11 марта 2009

В дополнение к точным ответам об использовании xargs или find, вы также можете избавиться от дополнительного процесса, исключив zcat и добавив вместо него zgrep или grep -Z.

...