我正在尝试用逗号替换空格输出 ls -l。 (长话短说我想用逗号分隔列)
我试过这个
ls -l *.nc | sed -e 's/ /,/g'
但是我在列和另一列之间的每个空格中都有一个逗号。 相反,我希望得到一个逗号,其中“至少”有一个空格。 因此,如果列与下一列之间有10个空格,我想要 只插入1个逗号。
有什么建议吗?
答案 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 ','
其中:
答案 2 :(得分:0)
如果由于某些原因这些方法无济于事,您可以尝试粘贴
ls -l *.nc | paste -s -d ","
其中-d“,”是分隔符