Допустим, у меня есть файл, содержащий следующие две строки:
2014-05-05 09:11:53 /aa/bbbb/cccccc 29899
2014-05-05 09:12:17 /aa/bbbb/cccccc?dddddddd 16767
Мне нужно , чтобы получить строку , содержащую образец /aa/bbbb/cccccc
только, мне не нужен второй строки , содержащие дополнительные символы , то есть ?dddddddd
. Теперь, когда я пытался
grep '/aa/bbbb/cccccc' file
Затем обе линии выбираются. Мне нужна полная строка, поэтому grep -o
не может быть решением.
Что может быть возможным решением с использованием grep, чтобы только первая строка была выбрана на основе шаблона поиска?
источник
grep '/aa/bbbb/cccccc ' file
/aa/bbbb/cccccc
строку.grep -E '/aa/bbbb/cccccc(\s+|$)' file
grep -E '(^|\s)/aa/bbbb/cccccc(\s|$)' file
Самый простой способ - добавить пробел после вашего шаблона:
Или, чтобы соответствовать всем видам пробелов:
Или
Или с положительным взглядом :
Или с отрицательным взглядом :
Или вы можете отменить матч:
Или, чтобы также соответствовать линиям, которые не содержат ничего, кроме вашего шаблона (без пробелов):
Или вы можете просто использовать небольшой скрипт:
В awk:
Или, если вы не знаете, в каком поле находится ваш паттерн
В Perl
источник
grep -v 'c?' file
почему вы не используете,grep -v '?' file
потому что файл имеет только две строки.grep -v '?'
будет достаточно.В дополнение к @AvinashRaj «s ответ , вы также можете использовать команду , как это.
источник