首页 > 解决方案 > Bash - 读入一个文件并用一个逗号替换多个空格

问题描述

我正在尝试编写一个 bash 脚本,该脚本将接收带有空格的文件并输出相同的文件,但以逗号分隔。我想出了如何用逗号替换空格,但我遇到了一个问题:有些行的空格数是可变的。有些行包含 2 或 3 个空格,有些包含多达 7 或 13 个空格。这是我目前所拥有的:

sed 's/ /,/g' $varfile > testdone.txt

$varfile 是用户提供的文件名。

但我不确定如何解决可变空间问题。欢迎任何建议。谢谢你。

标签: bashunix

解决方案


这不是一份工作sedtr更合适:

$ printf 'foo      bar\n' | tr -s ' ' ,
foo,bar

-s告诉tr压缩多次出现。此外,您可以概括使用tr -s '[:space:]' ,(这将替换换行符,可能不受欢迎)或tr -s ' \t' ,处理空格或制表符。


推荐阅读