宝 贝 计 划babyplan.blog.chinaunix.net
我爱钓鱼
全部博文(350)
资料文档(18)
摄影(27)
钓鱼(1)
网络及其它(5)
EDA软件(3)
windows(13)
solaris(1)
linux(37)
2014年(2)
2013年(1)
2012年(15)
2011年(46)
2010年(61)
2009年(80)
2008年(80)
2007年(65)
zhuqing_
dywobuai
shanggua
猥琐才是
Randy_Xu
wammc
jnlehaha
liangsto
xj286292
wb123456
linuxadu
bvc1234
格伯纳
浪花小雨
Bsolar
vcdtwo
liyijie7
tqyou85
分类: LINUX
2009-06-16 11:47:58
${expression}一共有9种使用方法。${parameter:-word}${parameter:=word}${parameter:?word}${parameter:+word}上面4种可以用来进行缺省值的替换。${#parameter}上面这种可以获得字符串的长度。${parameter%word} 最小限度从后面截取word${parameter%%word} 最大限度从后面截取word${parameter#word} 最小限度从前面截取word${parameter##word} 最大限度从前面截取word上面4个就是用来截取字符串的方法了。有了着四种用法就不必使用cut命令来截取字符串了。在shell里面使用外部命令会降低shell的执行效率。特别是在循环的时候。利用这个方法我简单的重写了以前用cut实现的cgi参数解析的shellstr=$QUERY_STRING[ "${str%&}" = "$str" ] && str="$str&"while [ -n "$str" ]; dopair=${str%%&*}var=${pair%=*}val=${pair#*=}str=${str#*&}eval $(echo "PARM_$var"="$val")done 字符串的处理: 1,截取 方法一: echo $a|awk ’{print substr( ,1,8)}’ substr是awk中的一个子函数,对第一个参数的进行截取,从第一个字符开始,共截取8个字符,如果不够就从第二个字符中补充 方法二 echo $a|cut -b2-8 cut:对标准输入的字符串进行处理 cut -bn-m:以byte为单位,从第n个byte开始,取m个 cut -bn,m:以byte为单位,截取第n,m个byte cut -b-n,m:以byte为单位,截取1-n,和第m个 -c:以charactor为单位 -d:指定分隔符,默认为tab -s:使标准输入中没有delimeter cut -f1:截取第1个域 方法三 a=123456 echo $ 方法四 使用sed截取字符串的最后两位 echo $test |sed ’s/(.*)(..)$//’ 截取字符串的前2位 echo $test |sed ’s/^(..)(.*)//’ 2,比较 好像没有什么可以比较的 3,连接 $a$b 或者 $string 4,翻转 方法一: 使用rev命令 方法二: 编写脚本实现 #!/usr/bin/awk -f ################################################################ # Description : duplicate rev in awk ################################################################ { revline = "" for (i=1;i<=length;i++) { revline = substr(,i,1) revline } } END{print revline} 5,匹配 grep egrep fgrep 6,排序 7,替换 bash中: %x=abcdabcd %echo $ # 只替换一个 bbcdabcd %echo $ # 替换所有 bbcdbbcd sh中: ?? 如何替换/ 使用sed 替换所有匹配 echo $test |sed ’s/xx/yy’ 替换单个匹配 ?? 8,得到字符串的长度: bash当中 $ 或者 expr "$VAR" : ’.*’ 9,判断字符串是否为数字 10,得到字符串中某个字符的重复次数 echo $a |tr "x" "n" |wc -l 得到的结果需要减去1 或者 echo $a |awk -F"x" ’{print NF-1}’ 11,得到字符串中某个string的重复次数 12,将一批文件中的所有string替换 for i in file_list do vi $i <<-! :g/xxxx/s//XXXX/g :wq done 13,如何将字符串内每两个字符中间插入一个字符 使用sed echo $test |sed ’s/../&[insert char]/g’
上一篇:飞飞的新本领
下一篇:读《聪儿爷爷博客》有感
登录 注册