shell分割字符串函数(支持特殊字符和不可见字符)
2011-07-12 21:51
471 查看
awk,sed是shell里最常用的分隔字符串的命令
但是对于不可见字符(\n,\r,\t),对于特殊字符(?,*,#,$)做分割符,操作比较困难
而且获取结果不方便,
因此我写了个分割函数支持
1.各种不可见字符(\n,\r,\t),对于特殊字符(?,*,#,$),任意长度的分隔符
2.返回结果为数组
运行结果
本文出自 “一方有” 博客,请务必保留此出处http://yifangyou.blog.51cto.com/900206/609354
但是对于不可见字符(\n,\r,\t),对于特殊字符(?,*,#,$)做分割符,操作比较困难
而且获取结果不方便,
因此我写了个分割函数支持
1.各种不可见字符(\n,\r,\t),对于特殊字符(?,*,#,$),任意长度的分隔符
2.返回结果为数组
#!/bin/bash #分割字符串函数 #参数1 split_argv1:要分割的字符串 #参数2 split_argv2:分隔符 #返回值:0:成功,1:失败; #结果集:split_array数组 # split_str(){ if [ "$split_argv2" == "" ] then return 1; fi split_len=0; split_array=(); break_len=${#split_argv2} #判断是否包含分隔符,获取索引 index=`expr index "$split_argv1" "$split_argv2"` while [[ "$index" -gt "0" ]] do #获得分割好的字符串 split_array[$split_len]=${split_argv1:0:$index-1} split_len=$split_len+1; #记录截断的字符串 split_argv1=${split_argv1:$index-1+break_len} index=`expr index "$split_argv1" "$split_argv2"` done #把最后一个保存 split_array[$split_len]=$split_argv1; return 0; } echo "------------------------------------------------------------------" split_argv1=$1; split_argv2=$2; echo "argv1=[$1]" echo "argv2=[$2]" #测试 split_str $1 $2 #打印结果 alen=${#split_array[*]}; echo -n "result=" for ((i=0;i< $alen;i++)) do echo -n "["${split_array[$i]}"],"; done echo ""; echo "------------------------------------------------------------------" exit 0;
运行结果
------------------------------------------------------------------ [root@localhost cgi-bin]# sh split_str.sh "1*2*3*4" "*" ------------------------------------------------------------------ argv1=[1*2*3*4] argv2=[*] result=[1],[2],[3],[4], ------------------------------------------------------------------ [root@localhost cgi-bin]# sh split_str.sh "a b c d" " " ------------------------------------------------------------------ argv1=[a b c d] argv2=[ ] result=[a],[b],[c],[d], ------------------------------------------------------------------ [root@localhost cgi-bin]# sh split_str.sh "1abc23 abcd4" "abc" ------------------------------------------------------------------ argv1=[1abc23 abcd4] argv2=[abc] result=[1],[23 ],[d4], ------------------------------------------------------------------
本文出自 “一方有” 博客,请务必保留此出处http://yifangyou.blog.51cto.com/900206/609354
相关文章推荐
- java split 分割特殊字符
- shell学习之-特殊字符
- shell 编程中的特殊字符的处理
- shell中特殊字符(串)
- IE下cookie的version区别与特殊字符支持情况
- shell中vi替换特殊字符(制表符\t等)的方法
- shell 之 cat 显示不可见字符
- 浅析Java执行外部命令的几个要点(4)——支持shell的"|","`","*","?"等特殊符号
- shell特殊字符,shell的几个命令
- shell 特殊字符
- shell特殊的环境变量 特殊字符 文件测试参数
- Java字符串split分割星号*等特殊字符问题
- 《shell中的通配符,特殊字符和正则表达式》
- Shell-bash中特殊字符汇总[转]
- Shell特殊字符
- mb_chunk_split_支持宽字符的分割
- (转)shell的特殊字符
- shell中的特殊字符(`),又名重音符号、反向引号、反向单引号
- Shell特殊字符(下)
- Shell中的特殊字符