针对文本内容的操作
针对文本内容进行匹配或者过滤
排序
grep 过滤
针对文本内容进行过滤,也就是查找
-i 忽略大小写;默认的,可加可不加
-n 显示匹配的行号及内容
-c 只显示匹配的行的数量
-v 取反,显示不匹配的行的内容
grep的作用:过滤文本内容,是针对“行”来进行处理
-m 多个匹配的话,可以限定显示几行;后面加空格跟数字,不加数字会报错
-m 1
-o 仅显示匹配到的字符串
-q 静默模式;什么都不输出,匹配但不输出
-A 3 匹配到内容行后,再向下展示3行A=after;匹配到的行也会显示,但不算计数(即共显示4行)
-B 2 匹配到当前行以及当前行的,
-C 3 匹配到当前行以及上下各3行
例:
[root@mysql1 opt]# grep -A 2 "avahi" /etc/passwd
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
-e 逻辑或,可以匹配多个条件,满足其一便打印;可以实现多个选项见得逻辑关系,可以跟多个条件
-e 条件1 -e条件2 -e 条件3 ...
-w 匹配整个单词;精确匹配
-E 使用扩展正则表达式;grep -E 等同于egrep都是可以使用扩展正则表达式
-f 根据两个文件的内容进行匹配,匹配两个文件中相同的内容
-r 递归目录,但不处理软连接,硬链接不受影响
-R 递归目录,处理软连接
sort 排序
以行为单位,对文件的内容进行排序,也可以根据不同的数据类型进行排序
格式:
sort 选项 参数
cat 文件名 | sort 选项
常用选项:
-f 忽略大小写,但默认会把大写的字母排在前面;先排数字再排字母
-b 忽略每行前面的空格;会按行号进行排序
-n 按照数字进行排序
-r 反向排序
-u 去重;相同的数据只显示一行
-o 输出文件名,将排序后的结果转存到指定的文件
cat -n test | sort -n -o ky30.txt
uniq 去重的命令
用于报告或者忽略文件中连续出现的重复行,经常与sort命令结合使用
格式:
uniq 选项 参数
cat 文件名 | uniq 选项
常用选项:
-c 统计连续重复的行的次数,合并重复的行,然后打印;仅打印,不会改变文件原有内容
-u 显示仅出现一次的行,包括不连续的重复行
-d 仅显示连续重复出现的行
tr
用于对来自标准输入的字符进行替换、压缩和删除
格式:
tr 选项 参数
也可以结合管道符使用
常用选项:
" " 直接替换
echo 192.168.220.10 | tr "." " " 替换,将"点"替换成空格
-c 保留字符集1的字符,字符集1的其他字符用字符集2来替换
echo abc | tr -c "ab" "t" 替换,将ab以外的其他内容替换成t;默认会多加一个t
-d 删除指定的字符集
-s 把重复出现的字符串压缩成一个字符串,也可以替换
-t 默认就是替换,可写可不写
tr常用于删除不想要的部分
\n将多个空行压缩成一个
sort -n test.sh | tr -s "\n" 将多个空行压缩成一个
echo $PATH | tr -s ":" "\n" 将“冒号”替换成“换行”
cut 截取
对字段进行截取和裁剪;与awk相似,可以先截取行再截取列
格式:
cut 选项 参数
cat 文件名 | cut 选项
常用选项:
-d 指定分隔符,默认分隔符为tab键
awk的默认分隔符是空格,多个空格也会算成一个
-f 按字段进行截取,指定要截取的字段;1-3,第1到3列;1,3 第1和第三列
-b 以字节为单位进行截取
-c 以字符为单位进行截取
--complement 删除指定字段
cat /etc/passwd | cut -d ':' -f 1-3 以冒号为分隔符,打印第1到第3列的内容
cat /etc/passwd | cut -d ':' -f 1,3 以冒号为分隔符,打印第1和第3列的内容
cat /etc/passwd | cut -d ':' -f 2 --complement 以冒号为分隔符,删除第2列的内容然后打印
cat /etc/passwd | cut -d ':' -f 1-3 --output-delimiter="@" 将第1到第3列的":"替换成@
split 文件拆分***
将大文件拆分成小文件
-l 指定行数拆分 ;line
-b 指定文件大小拆分 ;block
***
split -b 大小 文件名 拆分后的文件名
split -b 2m 文件A file 将文件A以每2mb为一份进行拆分,并命名为以file开头
split -l 行数 文件名 拆分后的文件名
split -l 20 /etc/passwd pwd 将文件passwd以每20为一个进行拆分,并命名为pwd开头
paste 文件合并***
paste a b 和 cat a b 之间的区别
两者都可以合并文本内容,并且都只是临时展示,不会对文件进行修改
paste是左右合并(不换行),cat是上下合并(换行)
***例题:
统计当前主机的连接状态
listen 监听;等待连接,判断谁可以连接
estab 已经建立连接,并且连接处于活动状态
netstat -antp
netstat -antp | grep -v "Foreign" | grep -v "established" | tr -s " " | cut -d " " -f 6 | sort | uniq -c
netstat -antp 打印当前网络状态信息
grep -v "Foreign" 和 grep -v "established" 取反是为了排除这两个不需要的内容
tr -s " " 压缩空格为一个
cut -d " " -f 6 指定空格为分隔符,并打印第6列连接状态的信息
sort 排序
uniq -c 统计两种状态的数量
ss -antp
ss -antp | grep -v "^State" | cut -d " " -f 1 | sort | uniq -c
统计当前主机的连接数
ss -nt | tr -s " "| cut -d " " -f 4 | sort | uniq -c