2012-11-09 145 views
0

我有把一个正则表达式一个sed命令里面有点问题里面,这是我的代码:正则表达式一个sed命令

RAW_LIST_B=`echo $RAW_LIST_A | sed s/[0-9a-f]{8}//g` 

,我得到这个错误:

sed: -e expression #1, char 13: unterminated `s' command 

我不知道如何引用[0-9a-f]{8}所以,它消除了所有的8位十六进制数字和后间隔从RAW_LIST_A

谢谢,

+0

你能不能也为$ RAW_LIST_A字符串样本值/变量? – divanov

回答

2

你应该附上SED表达研究进入一个引号所以它会传递给壳牌sed的一个字符串参数

RAW_LIST_B=`echo $RAW_LIST_A | sed "s/[0-9a-f]\{8\} //g"` 

输出示例:

$ echo "hello a5a5a5a6 world" | sed "s/[0-9a-f]\{8\} //g" 
hello world 
+0

没有影响,我怀疑这是从字面上寻找“[0-9a-f] {8}”。 - 虽然没有错误! – NWS

+0

那就是那个!谢谢 :) – NWS

2

这样做:

RAW_LIST_B=`echo $RAW_LIST_A | sed 's/[0-9a-f]\{8\}//g'` 

因为你没参数报价到sed,外壳分裂成三个参数:s/[0-9a-f]{8}//g它传递给sed之前。

此外,请注意反斜杠以避开大括号。

+0

没有效果,我怀疑这是从字面上寻找“[0-9a-f] {8}”。 - 虽然没有错误! – NWS

+0

呃,我以为你正在寻找一个文字'{8}'。如果这应该是“[0-9a-f]'原子重复次数”的次数,那么在'sed'中,您需要用反斜杠将其转义。查看更新后的答案。 – January