shell脚本中的var

本文转自:http://blog.sina.com.cn/s/blog_6f7a79ef01015zlk.html

最近在研究shell脚本,很不错的东西,在linux下面会给你带来很大的帮助。最经常遇到的问题就是最字符串进行处理。这里列出下面的方法。

1.大家熟悉的一些命令,比如cut,grep,sed,awk等,里面需要用到一些正则表达式,这个应该是比较容易学的,man一下就知道了。我大概说下吧

grep是搜索,比如某一行中含有你需要的字符串啊,等

cut就是截取第几个字符啊,以某个分隔符为界啊等等

sed替换啊,删除啊,新增,选取某一行啊

awk就是一行中分成几个字段来处理,$1,$2,$3,$0等,查下手册就知道了

我想这里介绍的是更牛的,我也很喜欢的,也很方面的,好像在bash下面的。

Firstly

${var##*string}从左向右截取最后一个string后面的字符

${var#*string}从左向右截取第一个string后面的字符

#{var%%string*}从左向右截取第一个string前面的字符

#{var%string*}从左向右截取最后一个string前面的字符

这里举个例子,比如var="xml.helloword.xml",string="."那么

${var##*.}="xml"

${var#*.}="helloword.xml"

${var%%.*}="xml"

${var%.*}="xml.helloword"

这里解释下,*string和string*代码通配符,就是匹配到的字符串,有可能匹配一个两个或多个,属于字符串的子字符串,比如例子中*.对应xml.和xml.helloword.,.*对应.helloword.xml和.xml。那么##是从字符串中去除匹配到的最长的那个子字符串,#就是最短的咯,**和*同理,但是#和*的区别在于#是从字符串左边开始去除,而*是从字符串右边也就是尾端开始去除。这里有个很有趣的记忆法,就是看你的键盘,大家应该都是美式的吧,看3,4,5这三个键上面的顺序就知道了,#$%,$代表字符串。这个是很强大,请大伙善用。

Secondly,

${var:n1:n2}截取变量var 从n1到n2的字符串

比如var="0a 1b 2c 3d 4e 5f 6g 7h 8i 9u "

${var:0:3}="abc"

#{var:3:5}="defgh"

我理解的意识,是n1代码开始的位置,第几个,n2代码几个字母,偏移所以。

你可能感兴趣的:(shell脚本中的var)