一、简介
Bash Shell提供了很多字符串和文件处理的命令。如awk、expr、grep、sed等命令,还有文件的排序、合并和分割等一系列的操作命令。grep、sed和awk内容比较多故单独列出,本文只涉及字符串的处理和部分文本处理命令。
二、字符串处理
1、expr命令
expr引出通用求值表达式,可以实现算术操作、比较操作、字符串操作和逻辑操作等功能。
(1)计算字符串长度
字符串名为string,可以使用命令${#string}或expr length $string两种方法来计算字符串的长度。若string包括空格,需用双引号引起来(expr length后面只能跟一个参数,string有空格会当作多个参数处理)。
(2)子串匹配索引
expr的索引命令格式为:expr index $string $substring(子串),在字符串$string上匹配$substring中字符第一次出现的位置,匹配不到,expr index返回0。
"wo"在字符串string中虽然出现在第7,但还是返回o首次出现的位置5。
(3)子串匹配的长度
expr match $string $substring,在string的开头匹配substring字符串,返回匹配到的substring字符串的长度,若string开头匹配不到则返回0,其中substring可以是字符串也可以是正则表达式。
"world"尽管在string中出现,但是未出现在string的开头处,因此返回0。
(4)抽取子串
Bash Shell提供两种命令#{...}和expr实现抽取子串功能。
其中#{...}有两种格式。
格式一:#{string:position}从名称为$string的字符串的第$position个位置开始抽取子串,从0开始标号。
格式二:#{string:position:length}增加$length变量,表示从$string字符串的第$position个位置开始抽取长度为$length的子串。
(都是从string的左边开始计数抽取子串)
#{...}还提供了从string右边开始计数抽取子串的功能。
格式一:#{string: -position},冒号与横杠间有一个空格
格式二:#{st