在shell脚本中用逗号替换空格

时间:2014-09-18 08:54:02

标签: shell scripting space comma

我正在尝试用逗号替换空格输出 ls -l。 (长话短说我想用逗号分隔列)

我试过这个

ls -l *.nc | sed -e 's/ /,/g' 

但是我在列和另一列之间的每个空格中都有一个逗号。 相反,我希望得到一个逗号,其中“至少”有一个空格。 因此,如果列与下一列之间有10个空格,我想要 只插入1个逗号。

有什么建议吗?

3 个答案:

答案 0 :(得分:1)

你必须挤压空格:将多个空格转换为一个空格。这可以通过tr -s ' '

完成
ls -l *.nc | tr -s ' ' | sed -e 's/ /,/g' 

来自man tr

  

-s , - 挤压重复

     

替换列出的重复字符的每个输入序列   SET1只出现一次该字符

您也可以告诉sed完成所有工作:

ls -l *.nc | sed 's/[ \t]+*/,/g'
                    ^^^^^^^ ^
                      |     replace with comma
                    get one or multiple spaces and tabs

答案 1 :(得分:0)

为了好玩,只有tr(需要两次)

ls -l *.nc | tr ' ' ',' | tr -s ','

其中:

  • 第1个tr用逗号替换所有空格
  • 第二个tr挤压重复逗号为1个逗号

答案 2 :(得分:0)

如果由于某些原因这些方法无济于事,您可以尝试粘贴

ls -l *.nc | paste -s -d ","

其中-d“,”是分隔符