Как я могу использовать поиск и замену для изменения содержимого файла.
Мне нужно иметь возможность изменить «все на ничего» и / или «ни на одно для всех» без необходимости вручную делать это каждый раз для сотен строк.
Ниже приведен образец текстового файла с номерами строк справа. Я уже умею открывать и закрывать файл на запись.
Линии
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 ---- нет
Ради интереса, решение Perl очень похоже на решение sed:
perl -pi.bak -e 's/all$/none/ || s/none$/all/' input_file
РЕДАКТИРОВАТЬ: я пропустил "||" первый раз. Как отдельные утверждения, второе отменяет первое. Ооо!
С правильно подобранной строкой вместо temp (в двух местах):
sed 's/all/temp/g;s/none/all/g; s/temp/none/g' input_file > output_file
или без временной строки, если «все» и «нет» никогда не появляются в одной строке и всегда заканчивают строку:
sed 's/all$/none/;t;s/none$/all/' input_file > output_file