红联Linux门户
Linux帮助

一道追加字符的sed题

发布时间:2011-04-18 20:41:52来源:红联作者:qiuzugen
Passwd.txt的内容如下:
AC456
AC492169
AC9967
AC88345
要往Passwd.txt每行的末尾加入passwd,我知道命令如下:
cat Passwd.txt | sed 's/[0-9][0-9]*/& passwd/g'
结果如下:
AC456 Passwd
AC492169 Passwd
AC9967 Passwd
AC88345 Passwd
我的问题是:这里为什么要写两个[0-9],写一个[0-9]的效果如下:
PasswdA PasswdC456 Passwd
PasswdA PasswdC492169 Passwd
PasswdA PasswdC9967 Passwd
PasswdA PasswdC88345 Passwd
不理解?
文章评论

共有 3 条评论

  1. deepwhite 于 2011-04-19 12:11:19发表:

    引用:
    楼上的另一种方法是误解。
    这里是正则表达达,正则表达式与通配符是不一样的!正则表达式中*表示匹配0次及以上,?表示匹配0次或1次,+表示匹配1次及以上,&表示前面匹配到的字串
    yanyongkg 发表于 2011-4-19 09:09

    是误解么?不是吧。

  2. yanyongkg 于 2011-04-19 09:09:39发表:

    [i=s] 本帖最后由 yanyongkg 于 2011-4-19 13:19 编辑 [/i]

    楼上的是正解,我刚才把问题想复杂了。
    不过要提醒楼主的是,你这只是往输出上追加了显示内容,不是改动文件本身,加改动文件本身请加 -i参数。
    这里是正则表达达,正则表达式与通配符是不一样的!正则表达式中*表示匹配0次及以上,?表示匹配0次或1次,+表示匹配1次及以上,&表示前面匹配到的字串

  3. acrofox 于 2011-04-19 06:08:41发表:

    * 代表 0 次或多次重复,注意是 0 次不是 1 次,任意位置都可以说是一个 0 长度的字符串,所以出来那个结果。
    另一种方法是[code]sed 's/$/ password/'[/code]