Perl поиск и замена
Как я могу использовать поиск и замену, чтобы изменить содержимое файла.
Мне нужно иметь возможность менять "все на нет" и / или "нет на всех" без необходимости делать это каждый раз вручную для сотен строк.
ниже приведен пример текстового файла с номерами строк справа. Я знаю, как открыть и закрыть файл для записи уже.
линии
1 define_filter absolute_minimal_filter ------- все
2 define_filter atma_basic_filter -------- ----- нет
3 define_filter atma_communication_filter - все
4 define_filter atma_health_filter ------------- нет
5 define_filter atma_misc_filter --------------- все
6 define_filter atma_performance_filter ---- нет
7 define_filter atma_supplemental_filter ---- нет
2 ответа
С правильно выбранной строкой вместо "temp" (в двух местах):
sed 's/all/temp/g;s/none/all/g; s/temp/none/g' input_file > output_file
или без строки temp, если "all" и "none" никогда не появляются в одной строке и всегда заканчивают строку:
sed 's/all$/none/;t;s/none$/all/' input_file > output_file
Интересно, что решение Perl очень похоже на sed:
perl -pi.bak -e 's/all$/none/ || s/none$/all/' input_file
РЕДАКТИРОВАТЬ: я пропустил "||" первый раз. Как отдельные заявления, второе отменит первое. D'о!