> echo howdareyou | sed -r "s/how(.+)you/how'\1'you/" how'dare'you
huntagain2008
2022-11-04 08:57:58 +08:00
#5 /how(.+)you/ 可能用的是“.“,跟用字母[a-zA-Z]匹配的结果完全不同 。当字符串很长,中间有一些干扰项,比如前面中间都有 how 、you ,结尾是 you ,中间明明是可以匹配好几个 how*****you 的,但是只匹配了第一个 how 和最后一个 you ,中间的各种 how****you 都没有打上引号,只给第一个 how 和最后一个 you 打了引号。
maosu
2022-11-04 09:12:37 +08:00
@aijam @huntagain2008 感谢感谢,两位写的都很好哈,我也发现了这个问题,/how(.+)you/只给头尾匹配的 how you 前加上了引号,还不太清楚怎么处理哈
huntagain2008
2022-11-04 09:22:53 +08:00
#2 how->how‘ you->‘you 这种还清楚点,小白我就是这样想的。
awk 有内置的 gsub 函数可以全局替换匹配项
# howxxxyou.awk # { value = $0 gsub(/how/, "&'", value) gsub(/you/, "'&", value) print value }