用sed替换带分号的空格或制表符

时间:2017-01-09 21:24:42

标签: sed

如何用单个分号替换制表符或空格?

这就是我正在尝试的:

 sed -i.bak 's/(\s)+|(\t)+/,/g' aws_lab.txt
+/ was unexpected at this time.

由于

2 个答案:

答案 0 :(得分:2)

只需使用适当的POSIX字符类:

sed 's/[[:space:]]\{1,\}/,/g' aws_lab.txt

极少数seds会识别\s的{​​{1}}简写,因为标签是[[:space:]]中包含的字符之一,您无需单独指定。此外,[:space:]是一个ERE元字符,而不是默认支持sed支持的BRE,因此您需要将+ arg添加到sed才能使用它(仅受GNU和OSX sed变体支持) )。

答案 1 :(得分:0)

这可能适合你(GNU sed):

sed -i.bak 's/[ \t][ \t]*/:/' file

或者

sed -ri.bak 's/[ \t]+/:/' file

选项卡前面有明确的空格:

sed -i.bak 's/[ \t][ \t]*/:/g' file

将在整行中替换重复的模式。