我想找到重复的空格(多个)并将其替换为一个空格。我试过:
sed -e 's/ []+/ /g' myfile.txt > myfile2.txt
这导致了一个空文件。为什么?以及如何实现我的目标?
答案1
您的命令出错:sed: -e expression #1, char 10: unterminated 's' command
因此可能有一个空文件,因为没有生成标准输出。
尝试sed -e 's/ \+/ /g' myfile.txt > myfile2.txt
答案2
在标准中sed
,要搜索一个或多个SPC字符,语法为:
sed 's/ \{1,\}/ /g'
或者
sed 's/ */ /g'
(星星前有两个空格)。或者使其更易读:
sed 's/[ ][ ]*/ /g'
一旦-E
(对于扩展正则表达式)被添加到标准中(这应该在下一个主要 POSIX 版本中发生,许多实现已经支持它),您还可以这样做:
sed -E 's/ +/ /g'
某些sed
实现还可以\+
将基本正则表达式(不带-E
)理解为 的别名\{1,\}
。
但在这里,你可以直接使用tr
:
tr -s ' ' < file.in > file.out
到s挤压空间。