正则替换问题

sh/bash/dash/ksh/zsh等Shell脚本
回复
ulosggs
帖子: 206
注册时间: 2009-03-25 13:17

正则替换问题

#1

帖子 ulosggs » 2012-12-07 23:37

abab<blahblah>baba
怎么只对<>之间的内容进行替换 s/a/A
得到 abab<blAhblAh>baba
生命诚可贵
不因虚度年华而悔恨
Dropbox: http://db.tt/zYrxtyj
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 正则替换问题

#2

帖子 eexpress » 2012-12-07 23:39

vim还是bash,还是perl?
● 鸣学
ulosggs
帖子: 206
注册时间: 2009-03-25 13:17

Re: 正则替换问题

#3

帖子 ulosggs » 2012-12-08 1:07

eexpress 写了:vim还是bash,还是perl?
sed
生命诚可贵
不因虚度年华而悔恨
Dropbox: http://db.tt/zYrxtyj
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 正则替换问题

#4

帖子 eexpress » 2012-12-08 19:51

sed 通常只对行进行地址定位,你这要进行2次匹配,取出并合并。
● 鸣学
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30

Re: 正则替换问题

#5

帖子 aerofox » 2012-12-12 20:45

代码: 全选

sed ':s;s/\(<[^a>]*\)a\([^>]*>\)/\1A\2/;t s'
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30

Re: 正则替换问题

#6

帖子 aerofox » 2012-12-12 21:15

如果一行只存在一对尖括号,也可以上面两个方括号定义的字符范围换成“.”。
cao627
帖子: 992
注册时间: 2007-12-05 10:57
系统: ubuntu14.04
来自: 金山

Re: 正则替换问题

#7

帖子 cao627 » 2012-12-12 23:40

代码: 全选

: lable ;替换; t lable
: lable 设置标志lable
t lable 如果成功执行了替换 就转移到lable标志,如此循环执行替换。
学习!
ulosggs
帖子: 206
注册时间: 2009-03-25 13:17

Re: 正则替换问题

#8

帖子 ulosggs » 2012-12-23 19:38

aerofox 写了:

代码: 全选

sed ':s;s/\(<[^a>]*\)a\([^>]*>\)/\1A\2/;t s'
多谢!
生命诚可贵
不因虚度年华而悔恨
Dropbox: http://db.tt/zYrxtyj
回复