Shell处理字符串常用技巧之分割、替换字符串

Shell处理字符串常用技巧之分割、替换字符串

在Shell编程中,经常要处理一些字符串变量。

下面给大家整理Shell处理字符串常用分割、替换字符串。

1、 ${#VALUE}:

计算VALUE字符串的字符数量。

2、 ${VALUE%.*}或${VALUE%%.*}:

删除VALUE字符串中以分隔符”.”匹配的右边字符,保留左边字符。

3、 ${VALUE#*.}或${VALUE##*.}:

删除VALUE字符串中以分隔符”.”匹配的左边字符,保留右边字符。

4、 ${VALUE/OLD/NEW}或${VALUE//OLD/NEW}:

用NEW子串替换VALUE字符串中匹配的OLD子串。

简单解释:

*:通配符,用于匹配字符串将被删除的子串。

.:分割符,可以为任意一个或多个字符。

%:从右向左匹配。

#:从左向右匹配。

/:表示替换。

% # /:非贪婪匹配,即匹配符合通配符的最短结果。

%% ## //:贪婪匹配,即匹配符合通配符的最长结果。

案例:

(1) 、${#VALUE}

[[email protected] shellFiles]$ name=odysee_odysee

[[email protected] shellFiles]$ echo ${#name}

13

(2) 、${VALUE%.*} and ${VALUE%%.*}

//非贪婪匹配

//%:从右向左匹配。

//删除name字符串中以分隔符”y”匹配的右边字符,保留左边字符。

[[email protected] shellFiles]$ echo ${name%y*}

odysee_od

补充:非贪婪

从右向左,删右留左

odysee_od y see

//贪婪匹配

//%:从右向左匹配。

//删除name字符串中以分隔符”y”匹配的右边字符,保留左边字符。

[[email protected] shellFiles]$ echo ${name%%y*}

od

补充:贪婪

从右向左,删右留左

od y see_odysee

(3) 、${VALUE#*.} and ${VALUE##*.}

//非贪婪匹配

//#:从左向右匹配。

//删除name字符串中以分隔符”y”匹配的左边字符,保留右边字符。

[[email protected] shellFiles]$ echo ${name#*y}

see_odysee

补充:非贪婪

从左向右,删左留右

od y see_odysee

//贪婪匹配

//#:从左向右匹配。

//删除name字符串中以分隔符”y”匹配的左边字符,保留右边字符。

[[email protected] shellFiles]$ echo ${name##*y}

see

补充:贪婪

从左向右,删左留右

odysee_od y see

(4) 、${VALUE/OLD/NEW} and ${VALUE//OLD/NEW}

//将o换为O

[[email protected] shellFiles]$ echo ${name/o/O}

Odysee_odysee

补充:

因为是非贪婪模式,所以只替换了第一个o

//将o换为O

[[email protected] shellFiles]$ echo ${name//o/O}

Odysee_Odysee

补充:

因为是贪婪模式,所以会替换所有o

总结:

关于以上的字符串操作,有点拗脑,不太容易记忆。

如果有什么好的记忆方式,望大家不吝赐教。

下一篇:Shell处理字符串常用技巧之截取子串

欢迎大家给予宝贵的意见或者建议。

欢迎大家补充或者共享一些其他的方法。

感谢支持。

欢迎投稿本站:紫金网 » Shell处理字符串常用技巧之分割、替换字符串