为什么这个表达式在日期后面没有找到空格?

为什么这个表达式在日期后面没有找到空格?

我用来sed查找与 00/00/0000 格式的日期匹配且后面有任意数量的空格的任何表达式,然后将其替换为字母 h。我做出了这样的表述:

sed -E 's/[[0-9][0-9]\/[0-9][0-9]\/[0-9][0-9][0-9][0-9][[:space:]]]/h/g' dates-input.txt

但不工作。

答案1

这里有几个问题:

  • /表达式中的斜杠 ( ) 必须进行转义。

  • 最外面的括号应该是圆括号或完全省略。

  • 如果您希望允许并替换任意数量的空间,则表达式应该是[[:space:]]*,而不仅仅是[[:space:]]

尝试这个:

's/[0-9][0-9]\/[0-9][0-9]\/[0-9][0-9][0-9][0-9][[:space:]]*/h/g'

相关内容