shell分割字符串函数(支持特殊字符和不可见字符)

简介:
awk,sed是shell里最常用的分隔字符串的命令
但是对于不可见字符(\n,\r,\t),对于特殊字符(?,*,#,$)做分割符,操作比较困难
而且获取结果不方便,
 
 
因此我写了个分割函数支持
1.各种不可见字符(\n,\r,\t),对于特殊字符(?,*,#,$),任意长度的分隔符
2.返回结果为数组
 
 
  1. #!/bin/bash   
  2.  
  3. #分割字符串函数   
  4.  
  5. #参数1 split_argv1:要分割的字符串   
  6.  
  7. #参数2 split_argv2:分隔符   
  8.  
  9. #返回值:0:成功,1:失败;   
  10.  
  11. #结果集:split_array数组   
  12.  
  13. #   
  14.  
  15. split_str(){   
  16.  
  17. if [ "$split_argv2" == "" ]   
  18.  
  19. then   
  20.  
  21. return 1;   
  22.  
  23. fi   
  24.  
  25. split_len=0;   
  26.  
  27. split_array=();   
  28.  
  29. break_len=${#split_argv2}   
  30.  
  31. #判断是否包含分隔符,获取索引   
  32.  
  33. index=`expr index "$split_argv1" "$split_argv2"`   
  34.  
  35. while [[ "$index" -gt "0" ]]   
  36.  
  37. do   
  38.  
  39. #获得分割好的字符串   
  40.  
  41. split_array[$split_len]=${split_argv1:0:$index-1}   
  42.  
  43. split_len=$split_len+1;   
  44.  
  45. #记录截断的字符串   
  46.  
  47. split_argv1=${split_argv1:$index-1+break_len}   
  48.  
  49. index=`expr index "$split_argv1" "$split_argv2"`   
  50.  
  51. done   
  52.  
  53. #把最后一个保存   
  54.  
  55. split_array[$split_len]=$split_argv1;   
  56.  
  57. return 0;   
  58.  
  59. }   
  60.  
  61.  
  62.  
  63. echo "------------------------------------------------------------------"   
  64.  
  65. split_argv1=$1;   
  66.  
  67. split_argv2=$2;   
  68.  
  69. echo "argv1=[$1]"   
  70.  
  71. echo "argv2=[$2]"   
  72.  
  73. #测试   
  74.  
  75. split_str $1 $2   
  76.  
  77.  
  78.  
  79. #打印结果   
  80.  
  81. alen=${#split_array[*]};   
  82.  
  83. echo -n "result="   
  84.  
  85. for ((i=0;i< $alen;i++))   
  86.  
  87. do   
  88.  
  89. echo -n "["${split_array[$i]}"],";   
  90.  
  91. done   
  92.  
  93. echo "";   
  94.  
  95. echo "------------------------------------------------------------------"   
  96.  
  97. exit 0; 

运行结果

 

 
  1. ------------------------------------------------------------------   
  2.  
  3. [root@localhost cgi-bin]# sh split_str.sh "1*2*3*4" "*"   
  4.  
  5. ------------------------------------------------------------------   
  6.  
  7. argv1=[1*2*3*4]   
  8.  
  9. argv2=[*]   
  10.  
  11. result=[1],[2],[3],[4],   
  12.  
  13. ------------------------------------------------------------------   
  14.  
  15. [root@localhost cgi-bin]# sh split_str.sh "a   
  16.  
  17. b   
  18.  
  19. c   
  20.  
  21. d" "   
  22.  
  23. "   
  24.  
  25. ------------------------------------------------------------------   
  26.  
  27. argv1=[a   
  28.  
  29. b   
  30.  
  31. c   
  32.  
  33. d]   
  34.  
  35. argv2=[   
  36.  
  37. ]   
  38.  
  39. result=[a],[b],[c],[d],   
  40.  
  41. ------------------------------------------------------------------   
  42.  
  43. [root@localhost cgi-bin]# sh split_str.sh "1abc23 abcd4" "abc"   
  44.  
  45. ------------------------------------------------------------------   
  46.  
  47. argv1=[1abc23 abcd4]   
  48.  
  49. argv2=[abc]   
  50.  
  51. result=[1],[23 ],[d4],   
  52.  
  53. ------------------------------------------------------------------  

 

     本文转自yifangyou 51CTO博客,原文链接:http://blog.51cto.com/yifangyou/609354,如需转载请自行联系原作者


相关文章
|
1月前
|
数据采集 Shell Linux
【Shell 命令集合 文档编辑】Linux 字符转换或删除 tr 命令使用指南
【Shell 命令集合 文档编辑】Linux 字符转换或删除 tr 命令使用指南
33 0
|
1月前
|
Shell Linux C语言
【Shell 命令集合 文档编辑 】Linux 递归搜索指定字符串 rgrep命令使用指南
【Shell 命令集合 文档编辑 】Linux 递归搜索指定字符串 rgrep命令使用指南
17 0
|
1月前
|
Shell Linux C语言
【Shell 命令集合 文档编辑】Linux 在文件中查找指定的字符串 fgrep命令使用指南
【Shell 命令集合 文档编辑】Linux 在文件中查找指定的字符串 fgrep命令使用指南
39 2
|
4月前
|
Shell
Shell函数
Shell函数
26 1
|
1月前
|
Linux C语言 C++
Linux Shell_cut命令(按列提取文本字符)
Linux Shell_cut命令(按列提取文本字符)
22 0
|
18天前
|
Shell 应用服务中间件 nginx
shell学习(七) 【shell 函数】
shell学习(七) 【shell 函数】
8 1
|
18天前
|
Shell 应用服务中间件 开发工具
shell 学习(二) shell语法【特殊字符、转义字符、shell 字体颜色和字体背景】
shell 学习(二) shell语法【特殊字符、转义字符、shell 字体颜色和字体背景】
11 0
|
4月前
|
存储 Shell
shell函数介绍
shell函数介绍
31 2
|
1月前
|
Shell Linux C语言
Linux中执行Shell的函数(popen,system,exec)介绍:分享一些常用的执行Shell的函数及其相关编程技巧和经验
Linux中执行Shell的函数(popen,system,exec)介绍:分享一些常用的执行Shell的函数及其相关编程技巧和经验
31 0
|
2月前
|
存储 安全 Unix
利用Shell指令通过函数获取用户UID
利用Shell指令通过函数获取用户UID