shell编程中,插入与删除子串,以及子串比较、子串排序、子串的编码转换等方法。
1,插入子串 公式:插入子串=把"old子串"替换成"old子串+new子串"或者"new子串+old子串"
例子:下面在var字符串的空格之前或之后插入一个下划线
代码示例:
// 用{}
// 其他的还用演示么?这里主要介绍sed怎么用来插入字符吧,因为它的标签功能很有趣
// 看看sed的标签的顺序是不是\1,\2....,看到没?\2和\1掉换位置后,the和get的位置掉换了 2.5. 删除子串 删除子串:应该很简单了吧,把子串替换成“空”(什么都没有)不就变成了删除么。还是来简单复习一下替换吧。
例子:把var字符串中所有的空格给删除掉。
代码示例:
// 再用{}
$ echo ${var// /} getthelengthofme // 再用awk $ echo $var | awk '{gsub(" ","",$0); printf("%s\n", $0);}' // 再用sed $ echo $var | sed 's/ //g' getthelengthofme // 还有更简单的tr命令,tr也可以把" "给删除掉,看 $ echo $var | tr -d " " getthelengthofme
如果要删除掉第一个空格后面所有的字符串该怎么办呢?还记得{}的#和%用法么? 2.6. 子串比较 这个很简单:还记得test命令的用法么?man test。它可以用来判断两个字符串是否相等的。另外,你发现了“字符串是否相等”和“字符串能否跟另外一个字符串匹配"两个问题之间的关系吗?如果两个 字符串完全匹配,那么这两个字符串就相等了。所以呢,上面用到的字符串匹配方法,也同样可以用到这里。 2.7. 子串排序
差点忘记这个重要的内容了,子串排序可是经常用到的,常见的有按字母序、数字序等正序或反序排列。
代码示例:
$ var="get the length of me"
$ echo $var | tr ' ' '\n' | sort #正序排 get length me of the $ echo $var | tr ' ' '\n' | sort -r #反序排 the of me length get
2.7. 子串进制转换
代码示例:
$ echo "ibase=10;obase=16;10" | bc
A 说明:ibase指定输入进制,obase指出输出进制,这样通过调整ibase和obase,你想怎么转就怎么转啦! 2.7. 子串编码转换 字符编码通常是指把一序列”可打印“字符转换成二进制表示,而字符解码呢则是执行相反的过程,如果这两个过程不匹配,则出现了所谓的”乱码“。
编码转换。
代码示例:
$ nihao_gb2312=$(echo "你好" | iconv -f utf8 -t gb2312)
$ echo $nihao_gb2312 ? ? ? ? $ nihao_utf8=$(echo $nihao_gb2312 | iconv -f gb2312 -t utf8) $ PS1="$ " $ echo $nihao_utf8 你好 说明:当前终端默认编码是utf8。 (责任编辑:IT) |