Удалить строку с конкретным числовым значением

У меня есть файл, который выглядит так:

AA 110 B 2 .. BB 3 ... BBB 3 DF 3 DD AA 111 B 2 .. BB 3 ... BBB 0 FF 0 FF AA 112 C 2 .. BB 3 ... BBB 0 DF 0 DF AA 120 D 2 .. FF 3 ... FFF 3 DF 3 DD 

Я хотел бы удалить любую строку, которая содержит определенное числовое значение 0. Если я это сделаю:

 sed '/0/d' infile > newfile 

то строки 1 и 4 удаляются, потому что они содержат «0s» в 110 и 120. Я пробовал другие варианты с grep grep -v '0' infile > newfile или awk, но не повезло.

Я уверен, что есть простой способ сделать это, но не могу найти его. Есть предположения?

Благодаря!

  • Удалите дополнительные строки заголовков из файла, кроме первой строки
  • Как прокомментировать строки, соответствующие шаблону во всех файлах папки
  • Извлечение информации из записей в файле LDIF
  • транспонировать наборы из трех строк в столбцы
  • Как я могу удалить все символы, попадающие под / * ... * / includes / * & * /?
  • как составить список строк из файла, где эти строки находятся в собственной строке
  • Заменить скомпилированные символы юникода
  • Манипуляция текста: удаление значений x <= $ input из отсортированного списка и обобщения
  • 3 Solutions collect form web for “Удалить строку с конкретным числовым значением”

    Добавьте -w в grep чтобы выполнить полное сопоставление слов:

     $ grep -vw 0 infile AA 110 B 2 .. BB 3 ... BBB 3 DF 3 DD AA 120 D 2 .. FF 3 ... FFF 3 DF 3 DD 

    Попробуйте привязки к границе слова

     sed '/\b0\b/d' file AA 110 B 2 .. BB 3 ... BBB 3 DF 3 DD AA 120 D 2 .. FF 3 ... FFF 3 DF 3 DD 

    Обновление для вкладки с разделителями

     sed '/\t0\t/d' infile > newfile 

    Однако это безопаснее:

     sed '/\b0\b/d' infile > newfile 
    Linux и Unix - лучшая ОС в мире.