sed命令中的正则表达式

时间:2012-11-09 11:37:27

标签: regex sed sh

我把一个正则表达式放在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},以便从RAW_LIST_A

中删除所有8位十六进制数字和尾随空格

谢谢,

2 个答案:

答案 0 :(得分:2)

这样做:

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

由于您没有将参数引用到sed,因此shell将其分为三个参数:s/[0-9a-f]{8}//g,然后将其传递给sed }。

另外,请注意反斜杠以逃避大括号。

答案 1 :(得分:2)

你应该将sed表达式括在引号中,这样它就是一个由shell传递给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