我正在尝试编写一个bash脚本,该脚本将接收一个带有空格的文件并输出相同的文件,但以逗号分隔。我想好了如何用逗号替换空格,但我遇到了一个问题:有些行的空格数可变。有些行包含2或3个空格,有些行包含多达7或13个空格。到目前为止,我拥有的是:
sed 's/ /,/g' $varfile > testdone.txt
$varfile是用户提供的文件名。
但我不知道如何解决可变空间问题。欢迎提出任何建议。非常感谢。
这不是sed
的作业。tr
更合适:
$ printf 'foo barn' | tr -s ' ' ,
foo,bar
-s
命令tr
压制多次出现。此外,您还可以使用tr -s '[:space:]' ,
(可能不需要它来替换换行符(或tr -s ' t' ,
来处理空格或制表符。
您只需要使用+
量词来匹配一个或多个
假设GNU sed
sed 's/ +/,/g' file
# or
sed -E 's/ +/,/g' file
对于GNU基本正则表达式,"一个或多个"量词是+
对于GNU
扩展规则表达式,"一个或者多个"量化器是+