是否可以使用sed可靠地转义正则表达式元字符
我想知道是否有可能编写一个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不会导致任何人走错方向。
顺便说一下,讨论在这里提出来了。我认为这可能是收集解决方案的好地方,可能会破坏和/或详细说明。
相关分类