如何用单个分号替换制表符或空格?
这就是我正在尝试的:
sed -i.bak 's/(\s)+|(\t)+/,/g' aws_lab.txt
+/ was unexpected at this time.
由于
答案 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
将在整行中替换重复的模式。