Я використовую GNU SED для пошуку та заміни функціональності великих файлів (до 2 Гб).
Знайти та замінити символи можуть містити будь-які символи, отже, я хочу, щоб параметри пошуку та заміни розглядалися як звичайний текст у міру появи.
Я не хочу ставитись ні до пошуку, ні заміни параметрів як регулярного вираження командою sed.
Я багато експериментував, але щоразу отримую нові комбінації регулярних виразів, які не працюють для sed як простого тексту.
Як цього можна досягти?
Чи є якась формула, щоб уникнути особливих символів?
Примітка: Я використовую ~
оператор як сепаратор команд замість/
Нижче наведено приклад
sed -ne "s~^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$~Replace" -ne "w output.txt" "input.txt"
Вищенаведена команда не працює, оскільки вона трактує параметр find як регулярний вираз (як і регулярний вираз). Отже, щоб знайти текст, я повинен уникати деяких спеціальних символів у регулярному виразі, як показано нижче
sed -ne "s~\^\[-+\]?\[0-9\]\*\\.?\[0-9\]+(\[eE\]\[-+\]?\[0-9\]+)?\$~Replace" -ne "w output.txt" "input.txt"
В іншому прикладі я повинен змінити .*$
на " .\*\$
Але в", (.*$)
я не хочу мофікувати вхід.
Так чи є якесь універсальне правило для послідовності втечі?
~
. Яка версія sed це?