How to match whitespace in sed?
The character class \s
will match the whitespace characters <tab>
and <space>
.
For example:
$ sed -e "s/\s\{3,\}/ /g" inputFile
will substitute every sequence of at least 3 whitespaces with two spaces.
REMARK:
For POSIX compliance, use the character class [[:space:]]
instead of \s
, since the latter is a GNU sed extension. See the POSIX specifications for sed and BREs
This works on MacOS 10.8:
sed -E "s/[[:space:]]+/ /g"
Some older versions of sed may not recognize \s as a white space matching token. In that case you can match a sequence of one or more spaces and tabs with '[XZ][XZ]*' where X is a space and Z is a tab.