前言:
在shell脚本编程中,我们经常会用到切割字符串,类似于python中的split。但shell中的命令比较五花八门,小编也是苦扰了很久,终于下定决心对它做一个总结。
方法一:字符串替换法
#/bin/bashstring="Hello,Hi,How are you"array=(${string//,/})echo ${array[@]}for i in ${array[@]}do echo $idone
结果:
总结:这个方法比较好理解,就是将字符串中的‘,’替换为了‘ ’(空格)。然后重新构建为类似python中的列表:${array[@]}。
方法二:利用tr指令实现字符串替换
tr功能强大,用法简单:echo args | tr “oldsplit” “new split”。
#!/bin/bash/string="how,where,what,why"array=(`echo$string| tr "," " "`)for i in ${array[@]} do echo $idone
结果:
方法三:awk命令
#!/bin/bash/ string="how,where,what,why"array=($(echo$string| awk 'BEGIN {FS=",";OFS=" "} {print $1,$2,$3,$4}'))for i in ${array[@]}do echo $idone
结果:
方法四:IFS
#!/bin/bash/string="P585_M1_1P.fastq.gz"OLD_IFS="$IFS"echo"OLD_IFS: $OLD_IFS"IFS="_"array=($string)echo ${array[@]}IFS="$OLD_IFS"for var in ${array[@]}do echo $vardoneecho "${array[0]}_${array[1]}"
结果:
方法五:字符串的截取
#!/bin/bash/string="Hello,world,and you!"# First "," -> cut; retain right substrecho ${string#*,}# End "," -> cut; retain right substrecho ${string##*,}# end "," -> cut; retain left substrecho ${string%,*}# First "," -> cut; retain left substrecho ${string%%,*}# index; from index0 && 5 wordsecho ${string:0:5}# from index 5 >> endecho ${string:5}# from endecho ${string:0-4}
结果:
引用:
[1]https://www.cnblogs.com/cangqinglang/p/11952838.html
[2]https://blog.csdn.net/lw305080/article/details/78594011