Удалить строку, содержащую нечувствительность к регистру

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

20 BaDDOg 31 baddog 42 badCAT 43 goodDoG 44 GOODcAT 

и я хочу удалить все строки, содержащие слово « dog . Это мой желаемый результат:

 42 badCAT 44 GOODcAT 

Однако случай с dog нечувствителен.

Я думал, что могу использовать команду sed: sed -e "/dog/id" file.txt , но я не могу заставить это работать. Это связано с тем, что я работаю над OSX? Есть ли другой метод, который я мог бы использовать?

2 Solutions collect form web for “Удалить строку, содержащую нечувствительность к регистру”

Попробуйте grep :

 grep -iv dog inputfile 

-i игнорировать регистр и -v чтобы инвертировать совпадения.

Если вы хотите использовать sed вы можете сделать:

 sed '/[dD][oO][gG]/d' inputfile 

В sed есть также флаг I , который должен сделать регистр соответствия нечувствительным, но, насколько я помню, это не работает во всех вкусах sed . Для меня это работает:

 sed '/dog/Id' inputfile 

но вполне возможно, что это не работает на OS X.

Версия sed OSX не соответствует GNU; он полностью пропускает флаг i как вы можете видеть на странице руководства:

 The value of flags in the substitute function is zero or more of the following: N Make the substitution only for the N'th occurrence of the regular expression in the pattern space. g Make the substitution for all non-overlapping matches of the regular expression, not just the first one. p Write the pattern space to standard output if a replacement was made. If the replacement string is identical to that which it replaces, it is still considered to have been a replacement. w file Append the pattern space to file if a replacement was made. If the replacement string is identical to that which it replaces, it is still considered to have been a replacement. 

Вы можете установить gsed с помощью варева с помощью команды

 brew install gnu-sed 

и тогда вы можете использовать sed с флагом, не учитывающим регистр, следующим образом:

 gsed '/dog/Id' inputfile 
  • Извлечение линий на основе условий
  • Более сжатые методы для обертывания файла, чем использование sed
  • Как заменить заголовок файла заголовком другого файла
  • Как получить все номера из строки и добавить их?
  • как вставить обратную косую черту перед символом #?
  • Замените шаблон в файле длинной строкой
  • как добавить описание в нижнем колонтитуле
  • Извлечь текст, включая parens
  • Как вставить текст перед первой строкой файла?
  • Как получить последние три последние даты файла журнала?
  • Сортировка однозначно из строки
  • Interesting Posts

    Как отключить переключатель рабочего пространства мыши в Cinnamon?

    Сравнение и добавление файлов на основе полей

    Kali Linux openVPN не передает тест на утечку DNS

    Bash: параметр доступа, переданный последней команде

    Обычный пользователь не может отключить, если установлен с помощью root

    bash / shell pathname для mkdir, touch и т. д.?

    Создание сценария оболочки внутри текстового редактора

    sed – шаблон только на некоторых предопределенных строках

    Можно ли использовать косвенность для установки переменных?

    Скопировать все файлы с определенным именем файла длины

    Сценарий должен создавать новый файл каждый день с тем же именем, перед его созданием он должен переименовать файл предыдущего дня с отметкой времени времени

    sed для удаления 2 символов только в том случае, если это поле и пространство

    Как написать переопределения dconf для привязки к сайтам?

    Как сделать программу / обработать услугу?

    ENOSPC: Почему требуется баланс «btrfs»? Что оно делает?

    Linux и Unix - лучшая ОС в мире.