проблема bash с grep - PullRequest
       3

проблема bash с grep

0 голосов
/ 05 августа 2010

Всякий раз, когда я пишу grep -v "0", чтобы как-то игнорировать число 0 число 10 также игнорируется.

Пожалуйста, помогите мне использовать grep -v "0", игнорируя при этом 0 и не игнорируя 10

Ответы [ 4 ]

3 голосов
/ 05 августа 2010

Вы можете использовать целое слово:

grep -vw 0

Это позволило бы 10, но не 0,1

3 голосов
/ 05 августа 2010

grep "0" будет соответствовать любой строке с 0, поэтому отрицание этого значения не будет соответствовать любой строке с 0. Так как 10 содержит ноль, он будет "проигнорирован".

Вам нужно окружить свой 0 границами слова (\b), что говорит механизму регулярных выражений, что не может быть слова ((a-z0-9]) до или после нуля: grep "\b0\b"

Обратите внимание, что grep работает по строке, поэтому, если строка содержит 10 и 0, она не будет соответствовать.

2 голосов
/ 05 августа 2010

Итак, grep работает построчно.Если что-то в строке совпадает, это соответствует строке.Так как вы сказали инвертировать набор совпадений (-v), он не показывает ничего, содержащего 0 в строке, в которой содержится 10.

Если вы просто выводите построчно, например

0
1
2
3
4
<whatever>
10
11

и вы просто хотите игнорировать все, что имеет значение «0»,

вы можете сделать что-то вроде

grep -v "^ 0 $"

Я создал файл, содержащий несколько чисел

cat numbers.txt 
0
1
5
10
11
12

, затем запустил grep.

grep -v "^0$" numbers.txt 
1
5
10
11
12

Это то, что вы хотите?

0 голосов
/ 05 августа 2010

Предполагая, что это в строке, подобной этой:

12 0 5 10

Вы можете просто добавить 0 в grep: grep -v " 0 "

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...