【发布时间】:2014-10-04 04:06:54
【问题描述】:
如何让 Bash 匹配正则表达式,而不是用常量字符串替换值,而是将匹配的值传递给函数,然后从返回值中获取要替换的值函数。
类似于以下伪代码,它将[a-d] 的每个匹配项替换为相同的字符,但大写:
function uppercase() { echo ${1^^}; }
string="abcdefgh123cbazyz"
echo ${string//[a-d]/uppercase()}
# output: ABCDef123CBAzyz
我并不特别,任何通常安装在 Unix 系统上的语言(例如 sed、awk,甚至是 bash 中内置的有限正则表达式支持)都可以使用。
【问题讨论】:
-
如果我希望匹配是全局的,并不是重复多次运行函数那么简单,因为返回值可能包含反过来被正则表达式匹配的值。跨度>