Как мне найти строки с grep count = [some number> 0], если мой файл содержит count = 0, а также count =! 0?

Я хочу найти все строки, которые содержат count = < некоторое число> , кроме тех, у которых count = 0 .

Например, если в моем файле есть эти строки

Line1:  Hi it is text   count=0   yes
Line2:    Good count=2 bye bye 
Line3:   hi how are you count=3
Line4: -68 nice count=987 bye

, я хочу, чтобы моя команда возвращала строки 2, 3 и 4.

-4
задан 1 April 2019 в 18:59

2 ответа

Поскольку я понял вопрос, ответ:
Вы можете grep для "count=0" и инвертировать соответствие со следующей командой:
grep --invert-match ^count=0$

В grep файл добавьте его как опцию:
grep --invert-match ^count=0$ filename

Выше grep команда ожидают только "count=X" в каждой строке файла, без дополнительных символов в строке. Если файл содержит, что-то больше затем "count=X" затем исправляет команду grep, grep --invert-match count=0 filename. Символы ^ и начало соответствия $ и конец строки.

Если Ваш файл содержит некоторые строки без count=some_num вообще и Вы не хотите это, строки в выводе, затем grep похож на это: grep -E 'count=([1-9]+|[0-9][0-9]+)' - этот будет grep для count=num где цифра выше нуля. Это перестало работать, только если у Вас есть 'count=00' строка - с двумя или больше нулями
(^ внесенный Zanna)

Тестирование:

leonid@DevSSD:~$ cat txt
count=0aaaa
bbb count=1 aaaa
bbb count=999 aaaa
line without pattern
leonid@DevSSD:~$ grep --invert-match count=0 txt
bbb count=1 aaaa
bbb count=999 aaaa
line without pattern
leonid@DevSSD:~$ grep -E 'count=([1-9]+|[0-9][0-9]+)' txt
bbb count=1 aaaa
bbb count=999 aaaa
2
ответ дан 25 October 2019 в 07:38

можно сделать это с помощью sed.

grep "count=" | sed -e '/"count=0"/d'
0
ответ дан 25 October 2019 в 07:38

Другие вопросы по тегам:

Похожие вопросы: