我很难分割出这样的字符串:
444,555,text with, separator
进入这个:
444
555
text with, separator
即。到3元素数组(最后一个元素可能包含逗号)
我尝试了sed,但由于最后一个逗号,我最终得到了4个元素。
有什么想法吗?
谢谢,
答案 0 :(得分:2)
使用bash和array:
s='444,555,text with, separator'
IFS=, read -r a b c <<< "$s"
array=("$a" "$b" "$c")
declare -p array
输出:
declare -a array='([0]="444" [1]="555" [2]="text with, separator")'
答案 1 :(得分:1)
sed
编辑器允许替换 regexp 的 数字 匹配(即 k < / em> -th出现在一行内的字符串):
str="444,555,text with, separator"
sed 's/,/\n/1; s/,/\n/1' <<< $str
输出:
444
555
text with, separator
s/,/\n/1
- 1
这是一个数字标志,指示第一次出现,
以\n
替换
以下将给出相同的结果(暗示每次替换的第一场比赛):
sed 's/,/\n/; s/,/\n/' <<< $str
两次连续替换将产生3行(块)
答案 2 :(得分:0)
echo "444,555,text with, separator" | sed "s/\([0-9]*\),\([0-9]*\),\(.*\)/\1\n\2\n\3/"
输出:
444
555
text with, separator