Вирішення питання (відповідність двох рядків на одній лінії)


0

Тут у мене є команда 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 - зараз обидва відповідають

Дякую за допомогу - я думаю, що мені потрібна греп з regexp, щоб відповідати команді типу "Дата: [будь-яка] [будь-яка] [будь-яка] 0800", щоб спіймати "Дата" та "0800" в одному рядку ....


Замість того, щоб дати нам цю дуже довгу, але зламану команду, не залишаючи нас здогадуватися, що вона робить, і чим це відрізняється від того, що ви хочете, чи могли б ви надати нам замість прикладу чи двох, що показують зразок введення та бажаний вихід?
Ніколь Гамільтон

Відповіді:


3

Я думаю, це ви хочете, ви маєте на увазі. Дата з нулем або більше символів з наступною 0800

egrep -lir "apples|melons|cherry" file*.txt | xargs grep -l  "Date.*0800"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.