我有一个sed oneliner删除多余的空格:
sed -e 's/^\s*//' -e 's/\s*$//' -e 's/\s{2,}/ /g'
当我在" \tone1 two\t3three\t "
上测试时,sed会删除行开头和结尾处的空格,但不会匹配单词之间的多余空格,sed会返回\tone1 two\t3three
。我想要的是\tone1 two 3three
,因此sed -e 's/[ \t]{2,}/ /g'
无效。
regexr.com将表达式显示为功能性。
我的版本是GNU sed版本4.2.1。
答案 0 :(得分:0)
{
和}
需要在sed
使用的基本正则表达式模式下进行转义。
但是,您只需使用替换进行一次替换就可以使用此sed
:
sed -E 's/^[[:blank:]]+|[[:blank:]]+$|[[:blank:]]{2,}//g' file
POSIX字符类[[:blank:]]
匹配空格或制表符。