【问题标题】:regex inside a sed commandsed 命令中的正则表达式
【发布时间】:2012-10-29 17:35:53
【问题描述】:

在 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 位十六进制数字和尾随空格

谢谢,

【问题讨论】:

  • 您能否提供 $RAW_LIST_A 字符串/变量的示例值?

标签: regex sed sh


【解决方案1】:

这样做:

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

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

另外,请注意反斜杠以转义大括号。

【讨论】:

  • 无效,我怀疑这是在寻找字面上的“[0-9a-f]{8}”。 - 没有错误!
  • 呃,我假设您正在寻找文字 {8}。如果这应该是“[0-9a-f] 原子重复的次数”,那么在sed 中,您需要使用反斜杠对其进行转义。查看更新的答案。
【解决方案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

【讨论】:

  • 无效,我怀疑这是在寻找字面上的“[0-9a-f]{8}”。 - 没有错误!
猜你喜欢
  • 2013-08-07
  • 1970-01-01
  • 2020-05-21
  • 2018-02-27
  • 2011-04-23
  • 2018-05-31
  • 2012-07-07
相关资源
最近更新 更多