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

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

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, но не повезло.

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

Благодаря!

  • Как заменить строку в скобках с помощью sed
  • Как получить номер строки тех строк, которые имеют конкретное слово?
  • Как добавить двойные кавычки в каждую строку, а затем добавить запятую в конце строки?
  • Заменить поле в одном файле на основе совпадения с другим полем в другом файле
  • Удалите пробелы, кроме строк, начинающихся с определенного шаблона
  • Как печатать один столбец для других столбцов комбинированный путь без awk?
  • Как найти строку в файлеA, выбрать текст из этой строки и заменить строку на fileB?
  • Как удалить последний разделитель каналов из файла с разделителями по каналам в Unix?
  • 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 
    Interesting Posts
    Linux и Unix - лучшая ОС в мире.