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}
[odysee@kingdom shellFiles]$ name=odysee_odysee
[odysee@kingdom shellFiles]$ echo ${#name}
13
(2) 、${VALUE%.*} and ${VALUE%%.*}
//非贪婪匹配
//%:从右向左匹配。
//删除name字符串中以分隔符"y"匹配的右边字符,保留左边字符。
[odysee@kingdom shellFiles]$ echo ${name%y*}
odysee_od
补充:非贪婪
从右向左,删右留左
odysee_od y see
//贪婪匹配
//%:从右向左匹配。
//删除name字符串中以分隔符"y"匹配的右边字符,保留左边字符。
[odysee@kingdom shellFiles]$ echo ${name%%y*}
od
补充:贪婪
从右向左,删右留左
od y see_odysee
(3) 、${VALUE#*.} and ${VALUE##*.}
//非贪婪匹配
//#:从左向右匹配。
//删除name字符串中以分隔符"y"匹配的左边字符,保留右边字符。
[odysee@kingdom shellFiles]$ echo ${name#*y}
see_odysee
补充:非贪婪
从左向右,删左留右
od y see_odysee
//贪婪匹配
//#:从左向右匹配。
//删除name字符串中以分隔符"y"匹配的左边字符,保留右边字符。
[odysee@kingdom shellFiles]$ echo ${name##*y}
see
补充:贪婪
从左向右,删左留右
odysee_od y see
(4) 、${VALUE/OLD/NEW} and ${VALUE//OLD/NEW}
//将o换为O
[odysee@kingdom shellFiles]$ echo ${name/o/O}
Odysee_odysee
补充:
因为是非贪婪模式,所以只替换了第一个o
//将o换为O
[odysee@kingdom shellFiles]$ echo ${name//o/O}
Odysee_Odysee
补充:
因为是贪婪模式,所以会替换所有o
总结:
关于以上的字符串操作,有点拗脑,不太容易记忆。
如果有什么好的记忆方式,望大家不吝赐教。
下一篇:Shell处理字符串常用技巧之截取子串
欢迎大家给予宝贵的意见或者建议。
欢迎大家补充或者共享一些其他的方法。
感谢支持。