Answers:
字符类\s
将与空白字符<tab>
和匹配<space>
。
例如:
$ sed -e "s/\s\{3,\}/ /g" inputFile
将至少三个空格的每个序列替换为两个空格。
备注:为了符合POSIX,请使用字符类[[:space:]]
代替\s
,因为后者是GNU sed扩展。参见sed和BRE的POSIX规范
[[:space:]
不能使用[[:blank:]]
仅匹配水平制表符和空格(但不包括换行符,垂直制表符等)的替代方法。
这适用于MacOS 10.8:
sed -E "s/[[:space:]]+/ /g"
sed "s/[[:space:]]\+/ /g"
匹配一个或多个空格。
-E
标志。
某些较早版本的sed可能不会将\ s识别为空格匹配标记。在这种情况下,您可以将一个或多个空格和制表符序列与“ [XZ] [XZ] *”匹配,其中X是空格,Z是制表符。
sed 's/[ \t]*/"space or tab"/'
sed
在任何系统的任何版本上使用?如果不是这样,可能值得一提的是它在哪些方面的工作方式与其他答案类似,因此我们知道了局限性以及在哪些方面可能没有预期的结果。