shell—字符串截取和去重
程序员文章站
2022-03-11 12:04:35
...
字符串截取的八种方法和去重
Note: 本文不是采用的sed剪裁方法
Note: 本文截取
# 号截取
1、单#号
单#号截取,可以删除特定字符的左侧所有字符,并保留右侧字符。
这里的特定字符默认指从左测开始的第一个特定字符,如下代码段 b 是左侧第一个 b 。
[root@bogon ~]# char=abdasb1221342
[root@bogon ~]# echo ${char#*b} # 注意*的存在
dasb1221342
[root@bogon ~]# echo ${char#b} # 与* 对比
abdasb1221342
2、双#号截取
## 删除从最右边的一个特定字符的左边所有字符,保留右边字符。
[root@bogon ~]# char=abdasb1221342
[root@bogon ~]# echo ${char##*1} # 注意*号
342
[root@bogon ~]# echo ${char##1}
abdasb1221342
%号截取
1、单%号
单% 号截取,删除从右边开始的第一个特定字符的右边所有字符。
[root@bogon ~]# char=abdasb1221342
[root@bogon ~]# echo ${char%1*} # 注意* 号
abdasb122
[root@bogon ~]# echo ${char%1}
abdasb1221342
2、双%号
%%表示删除从右边开始最左边一个特定字符及其右边字符
[root@bogon ~]# char=abdasb1221342
[root@bogon ~]# echo ${char%%1*}
abdasb
You have mail in /var/spool/mail/root
[root@bogon ~]# echo ${char%%1}
abdasb1221342
: 号截取
Note: 一下部分直接举例说明,上面# % 为删除字符,下面的: 为截取字符。
1、左侧
- 双 : 号
[root@bogon ~]# char=abdasb1221342
[root@bogon ~]# echo ${char:1:2} # 第一个数字表示开始字符下标(从0开始),第二个表示截取下来的字符总个数
bd
You have mail in /var/spool/mail/root
[root@bogon ~]# echo ${char:0:4}
abda
- 单 : 号
[root@bogon ~]# char=abdasb1221342
[root@bogon ~]# echo ${char:6} # 从左测开始下标为6(就是第7个)开始截取一直到结束
1221342
2、右侧
- 双 : 号
[root@bogon ~]# char=abdasb1221342
[root@bogon ~]# echo ${char:0-11:6} # 从右侧开始第11个,截取6个
dasb12
- 单 : 号
[root@bogon ~]# char=abdasb1221342
[root@bogon ~]# echo ${char:0-10} # 从右侧第十个开始,一直到右侧结束
asb1221342
[root@bogon ~]# echo ${char: -10} # 将0用空格替代,与上相同
asb1221342
[root@bogon ~]# echo ${char:-10} # 注意这里没有空格
abdasb1221342
去重
1、sort -u
去除重复只保留一个
2、uniq
只去除连续的重复
3、示例
[root@bogon ~]# cat csdn
abc
abc
abc
xyz
abc
[root@bogon ~]# sort -u csdn
abc
xyz
[root@bogon ~]# uniq csdn
abc
xyz
abc
下一篇: linux服务器最大支持连接数