![为什么这个表达式在日期后面没有找到空格?](https://linux22.com/image/61785/%E4%B8%BA%E4%BB%80%E4%B9%88%E8%BF%99%E4%B8%AA%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%9C%A8%E6%97%A5%E6%9C%9F%E5%90%8E%E9%9D%A2%E6%B2%A1%E6%9C%89%E6%89%BE%E5%88%B0%E7%A9%BA%E6%A0%BC%EF%BC%9F.png)
我用来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'