我有以下字符串:
":: +1 +2 +3 +4 +5 -7 -6 :: 7 cycles"
我想 grep ::
之间的所有内容,删除 +
符号并用逗号作为分隔符写入数字,开头或结尾没有空格或逗号:
1,2,3,4,5,-7,-6
我尝试了以下方法:
echo ":: +1 +2 +3 +4 +5 -7 -6 :: 7 cycles" | sed -e 's/.*::\(.*\)::.*/\1/' | sed -e 's/+//g' -e 's/ /,/g'
目前还没有。关键是虽然这里我有 7 个字段(数字),但在我的工作中,字段的数量可能会有所不同,所以我不能只打印出带有 awk 声明。它需要一个适用于任意数量字段的解决方案。
最佳答案
使用 awk
,您可以通过使用 ::
(由空格和/或加号包围)作为输入字段分隔符来轻松完成此操作:
s=":: +1 +2 +3 +4 +5 -7 -6 :: 7 cycles"
awk -F '[+ ]*::[ +]*' '{gsub(/[+ ]+/, ",", $2); print $2}' <<< "$s"
1,2,3,4,5,-7,-6
关于bash - 获取两个字符之间的字符串和以逗号作为分隔符的输出字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44240443/