目录
一、文件处理工具
1、tr命令
1.1 转换字符
1.2 压缩字符及删除字符
2、seq命令
3、cut命令
4、tac命令
5、rev命令
6、sort命令
7、uniq命令
8、echo命令
9、date命令
二、字符串切片处理
1、取字符串的长度
2、跳过字符串最前边的字符
3、取字符串最后的字符
4、掐头去尾
5、取倒数的范围
6、删前留后
7、删后留前
8、查找替换
9、转换大小写
一、文件处理工具
1、tr命令
tr 命令用于转换或删除文件中的字符
tr 指令从标准输入设备读取数据,经过字符串转译后,将结果输出到标准输出设备
tr [OPTION]... SET1 [SET2]
选项 | 说明 |
---|---|
-c | 取补集,即替换除了SET1 中指定的字符之外的所有字符 |
-d | 删除输入中所有属于SET1 的字符 |
-s | 缩减连续重复的字符成指定的单个字符 |
-t | 替换SET1 中的字符为SET2 中对应位置的字符 |
--help | 显示程序用法信息 |
1.1 转换字符
1.2 压缩字符及删除字符
2、seq命令
用于生成一个序列的数字
seq [OPTION]... FIRST INCREMENT LAST
选项 | 说明 |
---|---|
-f | 指定输出格式 |
-s | 指定数字之间的分隔符 |
-w | 使得生成的数字等宽 |
3、cut命令
cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出
cut OPTION... [FILE]...
选项 | 说明 |
---|---|
-c | 按字符位置剪切 |
-f | 按字段(以指定的分隔符分隔)剪切 |
-d | 指定字段分隔符,默认为制表符 |
--complement | 显示未选择的列 |
#过滤磁盘已用空间大小
[root@localhost ~]#df|grep sda|tr -s " "|cut -d " " -f5|tr -d %
#df命令查看磁盘剩余,然后过滤出/dev/sda1磁盘,再用tr命令将连续的空格压缩成一个空格,再通过cut命令指定以空格为分隔符截取第五列,最后使用tr命令删除%号
#过滤本机IP地址
[root@localhost ~]#ifconfig ens33|tr -s " "|grep netmask|cut -d " " -f3
#先ifconfig指定查看ens33网卡信息,再通过tr命令将连续的空格压缩成一个空格,再过滤出含有netmask的行,最后使用cut命令以空格为分隔符截取第三列
4、tac命令
用于将文本文件逆序输出,即从最后一行开始显示,并向前逐行显示到第一行
tac [OPTION]... [FILE]...
5、rev命令
用于将文本文件中的每一行逆序输出,即将每一行的字符顺序颠倒
rev [OPTION]... [FILE]...
6、sort命令
用于对文本文件的内容或标准输入的行按字符顺序进行排序
sort [OPTION]... [FILE]...
选项 | 说明 |
---|---|
-r | 逆序排序 |
-R | 随机排序 |
-n | 按数值大小排序 |
-f | 忽略大小写排序 |
-t | 指定字段分隔符 |
-u | 仅显示不重复的行 |
-k | 指定按照哪个字段进行排序 |
7、uniq命令
用于过滤或报告文本文件中的重复行
uniq [OPTION]... [INPUT [OUTPUT]]
选项 | 说明 |
---|---|
-c | 显示每行重复出现的次数 |
-d | 仅显示重复的行 |
-i | 在比较行时忽略大小写 |
-u | 仅显示不重复的行 |
-d | 仅显示重复过的行 |
-f N | 忽略前N个字段 |
#统计日志中重复次数最多的前十个IP地址
[root@localhost data]#cat access_log|cut -d " " -f1|sort -n|uniq -c|sort -rn|head
#先查看日志内容,再以空格为分隔符取第一列的IP地址,再按数值大小进行排序后统计ip重复出现的次数,再按统计过的次数的数值大小倒序排序,最后取前十个IP地址
#统计当前系统共有多少状态
[root@localhost data]#ss -natp|tail -n +2|cut -d " " -f1|sort|uniq -c|wc -l
#先通过ss查看网络系统状况,去除第一行从第二行开始统计,以空格为分隔符取第一列的状态,再用sort排序后用uniq统计每个状态重复的次数,最后使用wc统计有多少状态
#统计当前连接的主机数
[root@localhost data]#ss -nt|tail -n +2|tr -s " "|cut -d " " -f5|cut -d ":" -f1|sort|uniq -c
#先使用ss命令查看当前网络系统状况,再去除第一行从第二行开始统计,再使用tr命令将连续的空格压缩成一个空格,再用cut命令以空格为分隔符截取第五列,再以 : 为分隔符截取第一列,再排序最后统计IP地址重复的次数
8、echo命令
用于在终端输出文本或变量的内容
echo [OPTION]... [STRING]
选项 | 说明 |
---|---|
-e | 允许使用转义字符 |
-n | 不要在末尾自动换行 |
9、date命令
用于显示或设置系统的日期和时间
date [OPTION]... [+FORMAT]
选项 | 说明 |
---|---|
-d | 显示指定日期/时间的格式 |
-u | 显示协调世界时(UTC)时间 |
-R | 以RFC 2822格式输出日期和时间 |
格式FORMAT | 说明 |
---|---|
%F | 完整日期格式,等价于 %Y-%m-%d |
%T | 时间(24小时制),等于%H:%M:%S |
%A | 当前locale 的星期名全称 (如:星期日) |
%B | 当前locale 的月名全称 (如:一月) |
%D | 按月计的日期;等于%m/%d/%y |
二、字符串切片处理
1、取字符串的长度
${#变量名}
2、跳过字符串最前边的字符
#返回字符串变量var中从第m个字符后(不包括第m个字符)的字符开始,到最后的部分,m的取值在0 到 ${#var}-1 之间(bash4.2后,允许为负值)
${var:m}
#返回字符串变量var中从第m个字符后(不包括第m个字符)的字符开始,长度为n的部分
${var:m:n}
3、取字符串最后的字符
#取字符串的最后的n个字符,注:冒号后必须有一空白字符
${var: -n} #n为正数
4、掐头去尾
#跳过前m字符,一直向后取到距离最后的n个字符之间的字符,即:掐头去尾
${var:m:-length}
5、取倒数的范围
#先从最右侧向左取到n个字符,然后再减去从最右测向左取到的m个字符,最后取到的字符是剩下的字符,且n>m,且-n前必须有空格
${var: -n:-m} #n,m为正数
6、删前留后
#懒惰模式,从前往后匹配到第一个word就结束,取第一个word后的所有字符
${var#*word}
#贪婪模式,从前往后匹全部word,取最后一个word后的所有字符
${var##*word}
7、删后留前
#懒惰模式,从后往前匹配到第一个word就结束,取第一个word前的所有字符
${var%word*}
#贪婪模式,从后往前匹配全部,取最后一个word前的所有字符
${var%%word*}
8、查找替换
${var/pattern/substr}
${变量/搜索的字符串/修改的字符串}
#查找var所表示的字符串中,第一次被pattern所匹配到的字符串,以substr替换之
${var//pattern/substr}
#查找var所表示的字符串中,所有能被pattern所匹配到的字符串,以substr替换之
${var/#pattern/substr}
#查找var所表示的字符串中,行首被pattern所匹配到的字符串,以substr替换之
# 在此处代表以 # 开头
${var/%pattern/substr}
#查找var所表示的字符串中,行尾被pattern所匹配到的字符串,以substr替换之
# 在此处代表以 % 结尾
9、转换大小写
#把var中的所有小写字母转换为大写
${var^^}
#把var中的所有大写字母转换为小写
${var,,}