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

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

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

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

Благодаря!

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 
  • Как извлечь только буквенно-цифровые символы из заданного текстового файла и распечатать их?
  • Есть ли команда добавить новую строку в текстовый файл, если значение этой строки отличается от следующего?
  • Скребок из приложений, отличных от браузеров, на Debian Jessie
  • Unix: добавить уникальные имена после знаков в тексте
  • Сравнение 2 файлов со вторым файлом, содержащим подмножество данных из файла 1
  • Как заменить текст в последней непустой строке?
  • Обработка текста для слов, связанных дефисом
  • раскомментирование определенного кода в большем файле
  • Как прокомментировать строки, соответствующие шаблону во всех файлах папки
  • Переупорядочить файл в UNIX
  • Извлечь все до строки соответствия
  • Linux и Unix - лучшая ОС в мире.