2013-07-25 2 views
2

Предположим, у вас есть файл с именем abc.txt - файл содержит 2 (или вообще больше) линии:Grep неизвестное количество пробелов (Linux)

word -c   (09:35:20) 
word  -c  (09:38:49) 

Если запустить команду $ grep "word -c" abc.txt вы получите только 1-й потому что количество пробелов между 1 и -c не совпадает со второй строкой. Есть ли способ решить эту проблему?

Вы не можете использовать grep'word1|word2' /path/to/file, поскольку пробелы между словом и -c варьируются.

ответ

3

Используйте + регулярок символа, который будет соответствовать по крайней мере один из предыдущего символа:

grep -E "word +-c" abc.txt 

Это регулярное выражение читает "матч 'слово', за которым следует один или более пробелов, а затем '-c'."

+0

все еще не хватает правильных файлов – user2619315

+1

Что вы подразумеваете под «захватом правильных файлов»? Не могли бы вы показать нам пример вместе с ожидаемым выходом? – Ingo

+0

Я имею в виду захват всех строк, которые говорят «слово», за которым следует неизвестное количество пробелов (ничего больше), а затем «-c» – user2619315

1

Grep 'слово * -c' abc.txt будет работать. Я не смог заставить grep 'word + -c' abc.txt работать.

+0

возможно, вам нужно egrep, или grep -E. – Ingo

+0

Да, обе эти работы. В моем тестовом файле. –

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