Bash 中的字符串处理
----from CharlesWang2's page----
% man expr
expr 命令中提供了很多字符串处理方法。
1. 得到长度
% x="abcd"
% expr length $x
% echo ${#x}
% expr "$x" : ".*"
2. 查找子串:
% expr index $x "b"
3.得到子字符串:
% expr substr "$x" 1 3
abc
# ${x:pos:lenght}
% echo ${x:1}
bcd
% echo ${x:0:2}
4.匹配正则表达式
# 打印匹配长度
% expr match $x "."
1
% expr match $x "abc"
5. 字符串的掐头去尾:
% x=aabbaarealwwvvww
% echo "${x%w*w}"
aabbaarealwwvv
% echo "${x%%w*w}"
aabbaareal
% echo "${x##a*a}"
lwwvvww
% echo "${x#a*a}"
bbaarealwwvvww
其中 , # 表示掐头, 因为键盘上 # 在 $ 的左面。
其中 , % 表示%, 因为键盘上 % 在 $ 的右面。
单个的表示最小匹配,双个表示最大匹配。
也就是说,当匹配的有多种方案的时候,选择匹配的最大长度还是最小长度。
6.字符串的替换
% x=abcdabcd
% echo ${x/a/b} # 只替换一个
bbcdabcd
% echo ${x//a/b} # 替换所有
bbcdbbcd
% man expr
expr 命令中提供了很多字符串处理方法。
1. 得到长度
% x="abcd"
% expr length $x
% echo ${#x}
% expr "$x" : ".*"
2. 查找子串:
% expr index $x "b"
3.得到子字符串:
% expr substr "$x" 1 3
abc
# ${x:pos:lenght}
% echo ${x:1}
bcd
% echo ${x:0:2}
4.匹配正则表达式
# 打印匹配长度
% expr match $x "."
1
% expr match $x "abc"
5. 字符串的掐头去尾:
% x=aabbaarealwwvvww
% echo "${x%w*w}"
aabbaarealwwvv
% echo "${x%%w*w}"
aabbaareal
% echo "${x##a*a}"
lwwvvww
% echo "${x#a*a}"
bbaarealwwvvww
其中 , # 表示掐头, 因为键盘上 # 在 $ 的左面。
其中 , % 表示%, 因为键盘上 % 在 $ 的右面。
单个的表示最小匹配,双个表示最大匹配。
也就是说,当匹配的有多种方案的时候,选择匹配的最大长度还是最小长度。
6.字符串的替换
% x=abcdabcd
% echo ${x/a/b} # 只替换一个
bbcdabcd
% echo ${x//a/b} # 替换所有
bbcdbbcd
0 Comments:
Post a Comment
<< Home