Shell--对字符串的操作
来源:互联网 发布:深圳it软件开发 编辑:程序博客网 时间:2024/05/22 08:03
1.其主要是利用了Shell内置的一系列字符串操作符号.具体的相关操作符号介绍如下:
${#string} $string的长度
${string:position} 在$string中,从位置$position开始提取子串
${string:position:length} 在$string中,从位置$position开始提取长度为$length的子串
${string#substring} 从变量$string的开头,删除最短匹配$substring的子串
${string##substring} 从变量$string的开头,删除最长匹配$substring的子串
${string%substring} 从变量$string的结尾,删除最短匹配$substring的子串
${string%%substring} 从变量$string的结尾,删除最长匹配$substring的子串
${string/old/new} 使用$new,来代替第一个匹配的$old
${string//old/new} 使用$new,代替所有匹配的$old
${string/#old/new} 替换开头.如果$string以$old开头,那么就用$new替换
${string/%old/new} 替换结尾.如果$string以$old结尾,那么就用$new替换
2.路径字符串处理
dirname ${FULLPATH} 取目录部分
basename ${FULLPATH} 取文件名部分
basename ${FULLPATH} ${EXT} 取文件名部分,并且去掉指定的扩展名
注意:不能使用正则表达式,只能使用?*的shell扩展.
例:
利用${string//old/new}将环境变量PATH的各个目录分开,每行显示一个.
1 echo -e ${PATH//:/'\n'}将$PATH内所有的":"换成"\n",并通过echo -e输出.
echo的-e参数,特别处理一些字符,若没有-e,则"\n"以字符的形式输出.
使用内部操作符代替awk,sed等外部程序,可以省略启动外部程序的时间,加快整个shell程序的运行.
3.利用正则表达式处理
PathNum = echo "${NewValue}" |grep -o ,|wc -l #查找NewValue中的‘,’的个数
${var##*string} 从左向右截取最后一个string后面的字符
${var#*string} 从左向右截取第一个string后面的字符
${var%%string*} 从左向右截取第一个string前面的字符
${var%string*} 从左向右截取最后一个string前面的字符
${var:n1:n2} 截取变量var 从n1到n2的字符串
例:
比如var="xml.helloword.xml",string="."那么
${var##*.}="xml"
${var#*.}="helloword.xml"
${var%%.*}="xml"
${var%.*}="xml.helloword"
这里解释下,*string和string*代码通配符,就是匹配到的字符串,有可能匹配一个两个或多个,属于字符串的子字符串,比如例子中*.对应xml.和xml.helloword.,.*对应.helloword.xml和.xml。那么##是从字符串中去除匹配到的最长的那个子字符串,#就是最短的咯,**和*同理,但是#和*的区别在于#是从字符串左边开始去除,而*是从字符串右边也就是尾端开始去除。
grep是搜索,比如某一行中含有你需要的字符串啊,等
cut就是截取第几个字符啊,以某个分隔符为界啊等等
sed替换啊,删除啊,新增,选取某一行啊
awk就是一行中分成几个字段来处理,$1,$2,$3,$0等,查下手册就知道了
- Shell--对字符串的操作
- shell对参数操作 字符串操作
- shell 的字符串操作
- 对字符串的操作
- 对字符串的操作
- 对字符串的操作
- 对字符串的操作
- 对字符串的操作
- shell变量的字符串操作
- 对字符串操作的javabean
- C#对字符串的操作
- 对字符串的操作总结
- C#对字符串的操作
- 对 字符串 的扩展操作
- sap对字符串的操作
- NSString 对字符串的操作
- Python 对字符串的操作
- NSString 对字符串的操作
- AE中加载个人数据库GDB方法探讨
- PAT B1036
- STM32移植lwip之建立web服务器
- Servlet URL映射中/和/*的区别
- 有return的情况下try catch finally的执行顺序
- Shell--对字符串的操作
- jquery ajax 实现批量删除
- PAT B1037
- php实现无限极分类
- PAT B1038
- ScrollView嵌套LinearLayout设置android:layout_height="match_parent"没效果解决
- wex5 教程 之 图文讲解 bind-css和bind-sytle的异同
- 系统学习机器学习之距离的度量(二)--DTW
- 基于STM32的DSP库的FFT变换