免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2542 | 回复: 11
打印 上一主题 下一主题

弱问一个关于sed的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-07 12:07 |只看该作者 |倒序浏览
小弟准备修改一个文档test     执行命令  sed -i "s/127.*/124/g" test

但后来发现test内容中并没有能够匹配127,但执行echo $?是返回码却是0     也就是说修改了一个根本不存在的内容,为什么返回码还是正确的?

论坛徽章:
0
2 [报告]
发表于 2009-07-07 15:18 |只看该作者
即使没有匹配内容,也属于安全完成吧

论坛徽章:
0
3 [报告]
发表于 2009-07-07 16:44 |只看该作者

回复 #1 ncut220 的帖子

原来想做个判断,如果sed没有成功  通过 [ $? -ne 0] && exit1   来结束 ,但现在看来即使修改了不存在的内容,返回码也是0  也就无法判断是否修改成功了,哪位大虾能给个好建议,如何判断sed修改没有成功。

论坛徽章:
0
4 [报告]
发表于 2009-07-07 16:46 |只看该作者
原帖由 ncut220 于 2009-7-7 12:07 发表
小弟准备修改一个文档test     执行命令  sed -i "s/127.*/124/g" test

但后来发现test内容中并没有能够匹配127,但执行echo $?是返回码却是0     也就是说修改了一个根本不存在的内容,为什么返回码还是正确的?

你要匹配127就sed 's/127/124/g' urfile

论坛徽章:
0
5 [报告]
发表于 2009-07-07 16:50 |只看该作者

回复 #4 timdcn 的帖子

谢谢, 我的意思是 如果不存在127,也就是匹配的是不存在的字符,那么如何能判断出来,我原来想通过返回码判断,事实证明是不行的。

论坛徽章:
0
6 [报告]
发表于 2009-07-07 17:42 |只看该作者

回复 #5 ncut220 的帖子

为什么不先用grep 和wc来判断一下

论坛徽章:
0
7 [报告]
发表于 2009-07-08 09:12 |只看该作者

回复 #1 ncut220 的帖子

除了grep还有没有其他的办法,我是想说 有没有可以直接判断sed修改失败的方法

论坛徽章:
0
8 [报告]
发表于 2009-07-08 09:27 |只看该作者
使用awk或者perl或者其他的来写脚本操作吧。

论坛徽章:
0
9 [报告]
发表于 2009-07-08 09:52 |只看该作者

回复 #8 零二年的夏天 的帖子

呵呵,小弟才疏学浅,楼上的大虾能否稍微详细的指点一下呢  谢谢

论坛徽章:
0
10 [报告]
发表于 2009-07-08 10:34 |只看该作者
写个思路吧,没有实际测。呵呵

  1. while read LINE
  2. do
  3.         echo $LINE
  4.         preNumber=${#LINE}
  5.         ${LINE//127/0}
  6.         curNumber=${#LINE}
  7.         if (( ${preNumber} -gt ${curNumber} ))
  8.         then
  9.                 printf "Match!\n"
  10.         fi
  11. done < test.text
复制代码

[ 本帖最后由 零二年的夏天 于 2009-7-8 11:02 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP