LINUX.ORG.RU

IFS=$'\n' ; 
for i in * ;
do 
  total=`wc -l $i` ; 
  grepped="$(echo $i | grep паттерн | wc -l)"
  [ $(( $total - $grepped)) -gt 1 ] && echo $i
done

мб так?

snoopcat ★★★★★
()

Сравнивай число строк в файле ('wc -l <file>' или 'cat <file> | wc l') и вывод 'grep <patternt> -c <file>' .

kostik87 ★★★★★
()
Ответ на: комментарий от snoopcat

-v, --invert-match
Invert the sense of matching, to select non-matching lines. (-v is specified by POSIX.)

anonymous
()
Ответ на: комментарий от snoopcat

grep же возвращает значение:

for i in *
do
  grep -v aa $i > /dev/null && echo $i
done

ziemin ★★
()
Ответ на: комментарий от anonymous


и в зависимости от флага -l он покажет те файлы, в которых совпадений нет вообще.
или весь весь контент этих файлов без тех, что попали под паттерн

xtraeft ★★☆☆
() автор топика
Ответ на: комментарий от snoopcat

да, спасибо.
еще вопрос с подвохом - это можно сделать средствами grep без wc?

xtraeft ★★☆☆
() автор топика

grep -v -l паттерн *

если дана директория, то например рекурсивно:

grep -R -v -l паттерн /path/to/dir

Nao ★★★★★
()
Ответ на: комментарий от Nao

спасибо, вчера подобным образом пытался и не получилось, видимо где то ошибся.

xtraeft ★★☆☆
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.