如何删除字符串bash shell中第n次出现的字符

时间:2017-08-17 23:02:09

标签: bash shell

我有一个这样的字符串:str="test,test,test,test,test,test"。如何删除字符str中的第n个逗号(,),其中n介于15之间? 任何人都可以提出任何建议吗?谢谢。

3 个答案:

答案 0 :(得分:4)

$ echo "$str"
test,test,test,test,test,test
$ sed 's/,//5' <<<"$str" #or echo "$str" |sed 's/,//5'
test,test,test,test,testtest

答案 1 :(得分:1)

我可以试一试。

不使用除echo和参数扩展之外的任何其他工具,您可以执行以下操作:

$ str="test,test,test,test,test,test"
$ echo ${str:0:4}${str:5}
testtest,test,test,test,test

$ echo ${str:0:9}${str:10}
test,testtest,test,test,test

$ echo ${str:0:14}${str:15}
test,test,testtest,test,test

$ echo ${str:0:19}${str:20}
test,test,test,testtest,test

$ echo ${str:0:24}${str:25}
test,test,test,test,testtest

所以,这个想法是......

echo ${variable:0:[index before the comma]}${variable:[index of the comma]}

显然,我做的不仅仅是你所说的5,而是更多的是为了示范。此时,我会将您需要的索引作为变量并输入逗号所在的值。

答案 2 :(得分:1)

以下是awk解决方案:

$ echo "$str" | awk -v n=3 'BEGIN{FS=OFS=","} 
                      {for (i=1; i<=NF; i++) 
                          printf "%s%s", $i, (i==n || i==NF) ? "" : OFS}'
test,test,testtest,test,test