Как удалить все строки из текстового файла, содержащего слова «кошка» и «крыса»?
command-line
text-processing
PersonX
источник
источник
Ответы:
grep
подходЧтобы создать копию файла без строк, совпадающих с «кошкой» или «крысой», можно использовать метод
grep
reverse (-v
) и с параметром целого слова (-w
).Параметр «целое слово» гарантирует, что он не будет совпадать
cats
или,grateful
например. Перенаправление вывода вашей оболочки используется (>
) для записи его в новый файл. Нам нужна-E
опция для включения расширенных регулярных выражений для(one|other)
синтаксиса.sed
подходВ качестве альтернативы, чтобы удалить строки на месте можно использовать
sed -i
:Эти
\b
границы множества слов иd
операция удаляют строку , соответствующее выражение между косой чертой.cat
иrat
оба соответствуют(one|other)
синтаксису, который мы, очевидно, должны избежать с помощью обратной косой чертыСовет: используйте
sed
без-i
оператора, чтобы проверить вывод команды перед перезаписью файла.(На основе Sed - удалить строку, содержащую определенную строку )
источник
Для проверки только в терминале используйте:
Чтобы действительно удалить эти строки из файла, используйте:
источник
Попробуйте vim-way:
источник
Рассмотрим , если у вас есть файл с ,
file_name
и вы хотите найти мышь , но в то же время несколько строк из мыши , имеющие другие слова , какcat
иrat
и вы не хотите , чтобы увидеть тех , кто в вашем выводе, так что один из способов сделать это -источник
портативный способ оболочки
Работает в
/bin/sh
, который естьdash
на Ubuntu, а такжеksh
, иbash
. Немного неловко, что вам приходится писать несколько тестов для каждого слова вcase
выражении, но переносимо. Работает со случаями, когда слово появляется отдельно в строке, в начале, конце строки или в середине строки, и игнорирует, где оно может быть частью другого слова.И вот как это работает:
источник