Я хочу найти все строки, которые содержат 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.
Поскольку я понял вопрос, ответ:
Вы можете 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
можно сделать это с помощью sed.
grep "count=" | sed -e '/"count=0"/d'