1.用shell数组实现
#!/bin/bash
str="hello,world,i,like,you,babalala"
arr=(${str//,/ })
for i in ${arr[@]}
do
echo $i
done
注:当字符串短(分隔字符不超过1000)的时候,速度还可以容忍。当分隔字符上千时速度有点无法忍受了。原因可能是shell数组性能差导致。
2.用shell 中sed替换分隔符来循环打印
#!/bin/bash
str="hello,world,i,like,you,babalala"
for i in `echo "$str" | sed 's/,/\n/g'`
do
echo $i
done
注:当字符串中分隔符少时和上面的实现没什么大的速度差别,当字符串中分隔上千时这个实现比上一个快很多倍。
3.用shell中awk
#!/bin/bash
str="hello,world,i,like,you,babalala"
注:这个方法简单,效率也不错。
=======================================
一 Linux 的字符串截取很有用。有八种方法。
假设有变量 var=http://www.linuxidc.com/123.htm
1 # 号截取,删除左边字符,保留右边字符。
echo ${var#*//}
其中 var 是变量名,# 号是运算符,*//表示从左边开始删除第一个 // 号及左边的所有字符
即删除 http://
结果是 :www.linuxidc.com/123.htm
.
2 ## 号截取,删除左边字符,保留右边字符。
echo ${var##*/}
##*/ 表示从左边开始删除最后(最右边)一个 / 号及左边的所有字符
即删除http://www.linuxidc.com/
结果是 123.htm
3 %号截取,删除右边字符,保留左边字符
echo ${var%/*}
%/* 表示从右边开始,删除第一个 / 号及右边的字符
结果是:http://www.linuxidc.com
4 %% 号截取,删除右边字符,保留左边字符
echo ${var%%/*}
%%/* 表示从右边开始,删除最后(最左边)一个 / 号及右边的字符
结果是:http:
5 从左边第几个字符开始,及字符的个数
echo ${var:0:5}
其中的 0 表示左边第一个字符开始,5 表示字符的总个数。
结果是:http:
6 从左边第几个字符开始,一直到结束。
echo ${var:7}
其中的 7 表示左边第8个字符开始,一直到结束。
结果是 :www.linuxidc.com/123.htm
7从右边第几个字符开始,及字符的个数
echo ${var:0-7:3}
其中的 0-7 表示右边算起第七个字符开始,3 表示字符的个数。
结果是:123
8 从右边第几个字符开始,一直到结束。
echo ${var:0-7}
表示从右边第七个字符开始,一直到结束。
结果是:123.htm
。
。
注:(左边的第一个字符是用 0 表示,右边的第一个字符用 0-1 表示)
二 Linux Shell 脚本中字符串的拼接方法
如果想要在变量后面添加一个字符,可以用一下方法:
$value1=home
$value2=${value1}"="
echo $value2
把要添加的字符串变量添加{},并且需要把$放到外面。
这样输出的结果是:home=,也就是说连接成功。
又如:
[root@localhost sh]# var1=/etc/
[root@localhost sh]# var2=yum.repos.d/
[root@localhost sh]# var3=${var1}${var2}
[root@localhost sh]# echo $var3
/etc/yum.repos.d/