您的位置:首页 > 运维架构 > Shell

shell 字符串操作

2016-05-20 18:17 537 查看

字符串长度

$ str="hello,mike"
$ echo ${#str}


结果

10


用shell自带的分割数组功能(IFS),将字符串分割成数组

将字符串”one,two,three,four”,以逗号为分割符分割为数组。

#!/bin/bash
a="one,two,three,four"

#变量$IFS存储着分隔符,将默认的分隔符备份到OLD_IFS
OLD_IFS="${IFS}"

#将分隔符设置为逗号“,”
IFS=","

#将字符串a分割为数组arr,圆括号()
arr=(${a})

#恢复默认分隔符
IFS="${OLD_IFS}"

#循环遍历打印数组,${arr[@]}存储整个数组
for s in ${arr[@]}
do
echo ${s}
done


上述代码输出结果:

one
two
three
four


摘自: http://1985wanggang.blog.163.com/blog/static/776383320121745626320/

shell截取字符串的方法一

使用 % 号操作符。用途是从右边开始删除直到第一次出现子字符串,即删除第一次出现的子字符串右边的字符,保留左边字符。用法为%substr*,例如:

$ str="qa-test-1"
$ echo ${str%-*}


结果

qa-test


2.使用 %% 号操作符。用途是从右边开始删除直到最后一次出现子字符串,即删除最后一次出现的子字符串右边的字符,保留左边字符。用法为%%substr*,例如:

$ str="qa-test-1"
$ echo ${str%%-*}


结果

qa


3.使用 # 号操作符。用途是从左边开始删除直到第一次出现子字符串,即删除第一次出现的子字符串的左边的字符,保留右边字符。用法为#*substr,例如:

$ str="qa-test-1"
$ echo ${str#*-}


结果

test-1


4.使用 ## 号操作符。用途是从左边开始删除直到最后一次出现子字符串,即删除最后一次出现的子字符串的左边的字符,保留右边字符。用法为##*substr,例如:

$ str="qa-test-1"
echo ${str##*-}


结果

1


shell截取字符串的方法二

1.从左边第几个字符开始以及字符的个数,用法为:start:len,例如:

$ str="hello,mike"
$ echo ${str:0:5}


结果:

hello


2.从左边第几个字符开始一直到结束,用法为:start,例如:

$ str="hello,mike"
$ echo ${str:6}


结果:

mike


3.从右边第几个字符开始以及字符的个数,用法:0-start:len,例如:

$ str="hello,mike"
$ echo ${str:0-5:1}


结果:

,


4.从右边第几个字符开始一直到结束,用法:0-start,例如:

$ str="hello,mike"
$ echo ${str:0-4}


结果:

mike


注:(左边的第一个字符是用 0 表示,右边的第一个字符用 0-1 表示)

参照:/article/4631579.html

子串替换一

1.
${string/substring/replacement}
使用
$replacement
来替换第一个匹配的
$substring
.

例:

$ str="hello,han"
$ echo ${str/han/wang}


结果:

hello,wang


2.
${string//substring/replacement}
,使用
$replacement
来替换所有匹配的
$substring
.

例:

$ str="I like java,do you like java?"
$ echo ${str//java/shell}


结果:

I like shell,do you like shell?


3.
${string/#substring/replacement}
,如果
$substring
匹配
$string
的开头部分, 那么就用
$replacement
来替换
$substring
.

例:

$ str="I like java,do you like java?"
$ echo ${str/#I/she}


结果:

she like java,do you like java?


4.
${string/%substring/replacement}
,如果
$substring
匹配
$string
的结尾部分, 那么就用
$replacement
来替换
$substring
.

$ str="I like java,do you like java?"
$  echo ${str/%java?/java or not?}


结果:

I like java,do you like java or not?


子串替换二tr

使用tr进行单个字符的替换

$ str="I like java,do you like java?"
$  echo $str | tr " " "_"


结果:

I_like_java,do_you_like_java?


使用tr将小写字母替换为大写字母

$ str="I like java,do you like java?"
$ echo $str | tr '[a-z]' '[A-Z]'


结果:

I LIKE JAVA,DO YOU LIKE JAVA?


参照:/content/1034160.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: