我无法找到以下改进sed命令的方法来处理以下三种文件名模式。
文档名称
P1932_文档名称
1932文档名称
现在,它可以正确输出前两个示例的替换:“文档名称” 。对于第三个示例,它在名称前面添加了一个多余的空格:“文档名称” (在 Name 前面有一个空格)。
sed -E 's/^[P]{0,1}[0-9]{0,4}[_\s]{0,2}(.*$)/\\1/g'
答案 0 :(得分:0)
$ sed -E 's/^P{0,1}[0-9]{0,4}[_[:space:]]{0,2}//' file
Name of document
Name of document
Name of document
您可以在GNU sed中将\s
用作[[:space:]]
的简写(即方括号表达式[:space:]
中的字符类[...]
),但是\s
<括号表达式[\s]
中的strong> inside 只是文字字符\
和s
。恕我直言,您应该始终只使用字符类来避免任何混乱。因此要明确:
\s
= [[:space:]]
[\s]
= \
或s