如何在 sed 中匹配空格?

如何在 sed 中匹配空格?

如何在 sed 中匹配空格?在我的数据中,我想匹配所有 3 个以上的后续空格字符(制表符),并用 2 个空格替换它们。如何做到这一点?

答案1

该字符类\s将匹配空白字符<tab><space>

例如:

$ sed -e "s/\s\{3,\}/  /g" inputFile

将用两个空格替换至少 3 个空格的每个序列。


评论:为了符合 POSIX 规范,请使用字符类[[:space:]]而不是\s,因为后者是 GNU sed 扩展。请参阅 POSIX 规范sed生物再生资源

答案2

这在 MacOS 10.8 上有效:

sed -E "s/[[:space:]]+/ /g"

答案3

sed 's/[ \t]*/"space or tab"/'

答案4

以上方法都对我不起作用。不过,我找到了最简单的答案,那就是使用 awk

user@~[]$ cat /tmp/file
/nospace/in/here
/this/one space
/well/seems we have spaces
user@~[]$ cat /tmp/file |awk 'NF>1'
/this/one space
/well/seems we have spaces
user@~[]$ 

相关内容