怎么让sed支持perl正则表达式
答案:2 悬赏:0 手机版
解决时间 2021-03-18 20:45
- 提问者网友:欲劫无渡
- 2021-03-18 10:48
怎么让sed支持perl正则表达式
最佳答案
- 五星知识达人网友:第四晚心情
- 2021-03-18 12:12
sed 是最基本的正则表达式,在这种表达式里,除了 . 和 * 以外,其它所有的特殊字符都必须转义,否则当作字面字符看待。 所以 + 是匹配它本身,\+ 才是作为量词修饰。 这种风格的表达式很多见,比如常用的编辑器 vi 就是这个风格。
全部回答
- 1楼网友:举杯邀酒敬孤独
- 2021-03-18 13:23
-e 's/:\+\s\+/:/' -e 's/ /_/g'
把每一行 第一次出现的 "连续 n 个 : 及 后面的m个空格" 替换成 : , 再把这一行中剩余的类似匹配内容替换成 _ , 其中 n >= 1, m>=1
比如
如果某行的内容是
sss:: ppp: mmm
则替换后变成
sss:ppp_mmm
然后
-e '/^$/d'
删除空行
然后
-e 's/[(%)]//g'
把每行出现的 ( 或者 % 或者 ) 字符全部删除,
比如
abc()% 被替换成 abc
然后
-e '/^1/d'
将 以字符 1 开头的行删除
最后
-e 's/[(*)]//'
把每行第一次出现的 ( 或者 * 或者 ) 字符删除。
注意,上面的每一个 -e 命令处理的对象都是前一条 -e 命令处理完后的结果。
所以假定有一个文件内容为
abc #unchanged line
sss:: ppp: (m%mm)zzz :::: end # change to sss:ppp_mmmzzz _end
1me #this line will be deleted
2123(* #change to 2123
end of file #unchanged
经过上面的命令后,变成
abc #unchanged line
sss:ppp_m%mmzzz _end # change to sss:ppp_mmmzzz _end
2123 #change to 2123
end of file #unchanged
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯