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

cat file1.txt:
apples
Date: Sun, 24 Feb 2013 8:14:06 -0800
peaches melons
cherry sky cloud
green purple
yellow

cat file2.txt:
apples
Date
peaches melons 0800
cherry sky cloud
green purple
black

Теперь нарушенная команда:

egrep -lir "apples|melons|cherry" /home/test/* | xargs grep -l "Date" | xargs grep -l "0800"

См. Первый аргумент: файл должен содержать яблоки ИЛИ дыни ИЛИ вишню Тогда второй аргумент: тот же файл должен содержать "Дата" и "0800" В ТО ЖЕ ЛИНИЮ

Итак, file1.txt должен совпадать, но не file2.txt - сейчас оба совпадают

Спасибо за помощь - я думаю, мне нужен grep с regexp, чтобы соответствовать команде типа «Дата:[любой] [любой] [любой] [любой] 0800», чтобы поймать "Дата" и "0800" в одной строке ....

1 ответ1

3

Я думаю, что это вы хотите иметь в виду. Дата с нулем или более символов, за которыми следует 0800

egrep -lir "apples|melons|cherry" file*.txt | xargs grep -l  "Date.*0800"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .