目录
一、文件处理工具
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,,}