新手请教linux sed命令替换的问题

有下面一段字符,要求将obj.value="后面的22:21:23替换成28:31:52(obj.value="后面不一定是22:21:23,就是obj.value="后... 有下面一段字符,要求将 obj.value = " 后面的22:21:23 替换成 28:31:52 (obj.value = " 后面不一定是22:21:23,就是obj.value = " 后面的6位,替换成28:31:52 其他不变)
obj.id = "0x00000013" ; obj.value = "28:31:52:E1:49:C9";
原文
obj.id = "0x00000013" ; obj.value = "22:21:23:E1:49:C9";
要求
obj.id = "0x00000013" ; obj.value = "28:31:52:E1:49:C9";
展开
 我来答
百度网友5311d79
2013-07-29 · TA获得超过1.9万个赞
知道大有可为答主
回答量:6356
采纳率:71%
帮助的人:3138万
展开全部

下面这样:

str='obj.id = "0x00000013" ; obj.value = "22:21:23:E1:49:C9";'
echo "$str" | sed -r 's/(obj.value = ")([0-9]+:){3}/\128:31:52:/'

后面的\1就代表前面的 (obj.value = ") ,原封不动归还。只替换后面部分。

l564199514
2013-08-05 · TA获得超过280个赞
知道小有建树答主
回答量:260
采纳率:0%
帮助的人:107万
展开全部
sed -i 's/(obj.value=")[[:alnum:]]{2}:[[:alnum:]]{2}:[[:alnum:]]"/\128:31:52/g' inputfile
------s----替换参数
------[[:alnum:]]-----正则表示数字与字母
-------\1--------前面匹配项的引用,即(obj,value=")
------/g--------表示替换所以出现的匹配项
------{2}------表示正则两个字符或数字
------i-------表示写入原文件
写正则需要考虑全面,不能只看一个项匹配了,就ok。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
waqa11111111
2013-07-29 · 超过12用户采纳过TA的回答
知道答主
回答量:49
采纳率:0%
帮助的人:33.8万
展开全部
echo 'obj.id = "0x00000013" ; obj.value = "22:21:23:E1:49:C9"' |sed -e 's/\(..:\)\{3\}/28:31:52:/'
直接能用的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
whudwl
2013-07-29 · TA获得超过1579个赞
知道小有建树答主
回答量:2118
采纳率:50%
帮助的人:1221万
展开全部
我的方法不好, 删掉了~
xiehuahere的方法更好。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
townsin
2013-07-29 · TA获得超过452个赞
知道小有建树答主
回答量:594
采纳率:50%
帮助的人:505万
展开全部
sed 's/\(obj\.value\s=\s\"\).\{8\}/\128:31:52/g'
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Redsky_s
2013-07-29 · TA获得超过146个赞
知道答主
回答量:99
采纳率:100%
帮助的人:29.1万
展开全部
前两个回答的都是高手
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式