+ -
当前位置:首页 → 问答吧 → 求助个sed匹配问题

求助个sed匹配问题

时间:2011-03-04

来源:互联网

1:#!/bin/bash
2:#rename file extesions
3:#
4:#     rfe old_extensions new_extension


假设这个文件名是tmp,那么我们可以使用下面的命令来去掉这个行号和冒号(:)

代码::
sed -e  s'/^[0-9]\{1,\}://g' tmp

上面这个是正确的

但是sed不使用替换模式直接用匹配打印就不正确了
比如sed /^[0-9]\{1,\}:/p tmp就不正确...

请问下是什么原因造成的 ,正确匹配应该如何写?
匹配一个数字加一个冒号不是[0-9]\{1\}:\{1\}么?

作者: lolizeppelin   发布时间: 2011-03-04

代码写错了,另外你到底想干什么
  1. sed -n '/^[0-9]\{1,\}:/p'
复制代码

作者: justlooks   发布时间: 2011-03-04

那个是复制的 多了个逗号吧好像也能用,哦是少了引号么?

作者: lolizeppelin   发布时间: 2011-03-04

我这里可以啊。

作者: blackold   发布时间: 2011-03-04

本帖最后由 lolizeppelin 于 2011-03-04 17:11 编辑

再问下
1:#!/bin/bash
2:#rename file extesions
3:#
4:#     rfe old_extensions new_extension
5::#

'sed /^[0-9]\{1\}:\{1\}/p' tmp

5::还会显示出来呀!

sed -n '/[0-9]\{1\}:\{2\}/p' tmp
又能正确匹配出5::

用sed -n '/:\{1\}/p',sed -n '/:\{2\}/p'测试了下
sed的正则的大括号不能限制上限

作者: lolizeppelin   发布时间: 2011-03-04

热门下载

更多