Мне интересно, можно ли написать 100% -ную надежную команду sed
, чтобы избежать любых метасимволов регулярных выражений во входной строке, чтобы ее можно было использовать в последующей команде sed. Вот так:
#!/bin/bash
# Trying to replace one regex by another in an input file with sed
search="/abc\n\t[a-z]\+\([^ ]\)\{2,3\}\3"
replace="/xyz\n\t[0-9]\+\([^ ]\)\{2,3\}\3"
# Sanitize input
search=$(sed 'script to escape' <<< "$search")
replace=$(sed 'script to escape' <<< "$replace")
# Use it in a sed command
sed "s/$search/$replace/" input
Я знаю, что есть более эффективные инструменты для работы с фиксированными строками вместо шаблонов, например awk
, perl
или python
. Я просто хотел бы доказать, возможно ли это или нет с sed
. Я бы сказал, пусть сосредоточится на основных POSIX-регулярных выражениях, чтобы еще веселее!:)
Я пробовал много вещей, но в любое время я мог найти вход, который нарушил мою попытку. Я думал, что он будет абстрактным, поскольку script to escape
не приведет никого в неправильное направление.
Btw, обсуждение появилось здесь. Я думал, что это может быть хорошим местом для сбора решений и, возможно, для их разлома и/или разработки.