Команда UNIX grep - PullRequest
       10

Команда UNIX grep

1 голос
/ 09 августа 2011

так что этот вопрос о команде UNIX grep.Я пытаюсь выполнить эту команду: grep '[^ echo]' test (test - это имя файла).К сожалению, все, что он делает, это просто печатает содержимое файла.Любая идея, что он должен делать или почему он ничего не делает?

текст:

abc hello what is up
123 I am testing this
echo utility 123124135
xyz

Вывод точно такой же текст.

Ответы [ 4 ]

6 голосов
/ 09 августа 2011

Шаблон [^echo] соответствует любому символу, кроме e, c, h и o. Например, строка ввода «echo utility 123124135» содержит все эти символы, но она также содержит символы, которые не e, c, h или o. Так что соответствует шаблону. Так же поступают и все остальные строки, потому что все они содержат символы, отличные от этих.

Если вы добавите строку ввода «echohce» в свой файл данных, вы должны заметить, что она пропускается при запуске grep с вашим шаблоном, поскольку не содержит какие-либо другие символы.

Если вы хотите, чтобы grep выводил все строки, которые не содержат текст "echo", попробуйте grep -v echo test. Переключатель -v указывает grep инвертировать смысл совпадения: выходные строки, которые не соответствуют шаблону. И шаблон «эхо» будет соответствовать любой строке, содержащей текст «эхо».

Если вы пытаетесь вывести все строки, которые начинают с "echo", тогда попробуйте grep ^echo test.

0 голосов
/ 17 мая 2016

Если вы хотите напечатать строки, не содержащие слова «эхо», попробуйте

grep -v "echo" test
0 голосов
/ 10 августа 2011

Если вы пытаетесь сопоставить echo в начале строки, попробуйте

grep "^echo" test

Однако, если вы пытаетесь сопоставить все строки, которые не содержат echo, попробуйте

grep -v "echo" test

РЕДАКТИРОВАТЬ: упс, я только что понял, что это урезанная версия ответа @ cdhowie!

0 голосов
/ 09 августа 2011

вы можете сделать это так:

cat text | grep echo 

Это выведет на экран строку со словом "эхо" на экране

...