我正在处理一种情况,我需要从数组中创建一个逗号分隔的列表到一个 heredoc 并删除最后一个逗号。我正在使用 bashfor
管道sed
,它正在擦除所有逗号而不是最后一个。一个简化的例子如下:
x=$(for i in a b c; do echo "${i}",; done| sed 's/,$//')
echo $x
a b c
期望的输出:
a, b, c
任何建议表示赞赏。
问题是,默认情况下,echo
每次调用时都会添加一个新行并sed
在这些新行上进行操作。您看不到这一点,因为当 bash 处理时$(...)
,这些新行将转换为空格。因此,要在对您的方法进行最小更改的同时解决问题:
$ x=$(for i in a b c; do echo -n "${i}",; done| sed 's/,$//') ; echo $x
a,b,c
该选项-n
告诉echo
不要添加新行。
如果您希望项目之间有空格,可以轻松添加它们:
$ x=$(for i in a b c; do echo -n "${i}, " ; done| sed 's/, $//') ;echo $x
a, b, c
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句