sed的正则替换问题

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
guaicai
帖子: 169
注册时间: 2012-01-29 9:30
系统: Fedora19 Xfce

sed的正则替换问题

#1

帖子 guaicai » 2012-03-11 14:48

目的是删除所有的 [ 符号跟 ] ,如下结果,何解?

$ cat t
[
]
[123]
sdfsdf
[sdfsdf
sdfsdf]
[]
$ cat t | sed 's/(\[|\])?//g'
[
]
[123]
sdfsdf
[sdfsdf
sdfsdf]
[]
===============================
XP XP XP XP XP XP XP XP XP XP XP XP
??现在的人问问题都是让人来猜吗??
XP XP XP XP XP XP XP XP XP XP XP XP
===============================
wutong
帖子: 345
注册时间: 2007-10-22 16:54

Re: sed的正则替换问题

#2

帖子 wutong » 2012-03-11 15:04

vim 中我知道这样做:
:%s/[\[\]]//gc
wutong
帖子: 345
注册时间: 2007-10-22 16:54

Re: sed的正则替换问题

#3

帖子 wutong » 2012-03-11 15:08

代码: 全选

cat t | sed 's/\[\|\]//g'
头像
guaicai
帖子: 169
注册时间: 2012-01-29 9:30
系统: Fedora19 Xfce

Re: sed的正则替换问题

#4

帖子 guaicai » 2012-03-11 15:15

wutong 写了:

代码: 全选

cat t | sed 's/\[\|\]//g'
为什么sed这么多符号要转义呢?

看来是正则不太一样阿
===============================
XP XP XP XP XP XP XP XP XP XP XP XP
??现在的人问问题都是让人来猜吗??
XP XP XP XP XP XP XP XP XP XP XP XP
===============================
Jr.z
帖子: 19
注册时间: 2012-02-13 10:58

Re: sed的正则替换问题

#5

帖子 Jr.z » 2012-03-11 15:26

或者:

代码: 全选

sed -e 's/\[//g' -e 's/\]//g' filename
或者:

代码: 全选

sed 's/\W//g' filename
上次由 Jr.z 在 2012-03-11 21:37,总共编辑 1 次。
Jr.z
帖子: 19
注册时间: 2012-02-13 10:58

Re: sed的正则替换问题

#6

帖子 Jr.z » 2012-03-11 15:27

guaicai 写了:
wutong 写了:

代码: 全选

cat t | sed 's/\[\|\]//g'
为什么sed这么多符号要转义呢?

看来是正则不太一样阿
其实不多 ,也就十几个吧
fnan
帖子: 919
注册时间: 2009-07-01 22:04

Re: sed的正则替换问题

#7

帖子 fnan » 2012-03-11 19:13

sed 's/\(\[\|\]\)//g' t
sed -r 's/\[|\]//g' t
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
头像
Think1st
帖子: 45
注册时间: 2012-02-07 23:08

Re: sed的正则替换问题

#8

帖子 Think1st » 2012-03-12 11:22

guaicai 写了:目的是删除所有的 [ 符号跟 ] ,如下结果,何解?

$ cat t
[
]
[123]
sdfsdf
[sdfsdf
sdfsdf]
[]
$ cat t | sed 's/(\[|\])?//g'
[
]
[123]
sdfsdf
[sdfsdf
sdfsdf]
[]

代码: 全选

sed -e 's/\]//g;s/\[//g' tfile
在这里,问题比答案更抢手。
头像
josephyoung
帖子: 158
注册时间: 2011-11-05 18:53
来自: 南极圈

Re: sed的正则替换问题

#9

帖子 josephyoung » 2012-03-13 12:34

也可以避免用\转义

代码: 全选

sed 's/[][]//g' t
回复