目录
绪论
文本处理有三剑客:grep sed awk
文本处理器:针对文件的内容进行匹配或者过滤
*匹配任意一个或者多个字符
touch 1.txt 2.txt 3.txt
ls *.txt
?匹配任意一个字符(就是匹配单个字符)
ls ?.txt
[ ] 匹配范围内的任意单个字符
touch {a..z}.txt
ls [a-n].txt
1、grep
grep 过滤,针对文本内容进行过滤,也就是查找
1.1 grep选项
grep -i 忽略大小写,默认的可以不加
grep -n 显示匹配行号
grep -c 只统计匹配的行数
grep -v 取反,查找到的内容不显示
eg:grep -v "root" /etc/passwd
grep的作用就是过滤文本内容,是针对行来进行处理
grep -m 多个匹配的话, 可以限定显示的行数,匹配几次之后停止
eg:grep -m 2 "root" /etc/passwd
grep -o 仅显示匹配到的字符串
grep -q 静默模式,什么都不输出
grep -A 就是after,后面跟数字,匹配到内容行后,向下展示几行
grep -B 就是before,匹配到当前行以及当前行的前几行
grep -C 匹配到自己所在的行,以及上下各几行
grep -e:逻辑或,可以匹配多个条件,实现多个选项的逻辑关系
eg:grep -e "root" -e "adm" /etc/passwd
grep -w 匹配整个单词
grep -E/egrep:使用正则表达式
grep -f 根据两个文件的内容进行匹配,匹配两个文件中相同的内容
grep -r 递归目录,不处理软连接
grep -R 递归目录,处理软连接
grep -v "^#" test.txt 显示不以#开头的行
2、sort 排序
sort:以行为单位,对文件内容进行排序,也可以根据不同的数据类型进行排序
格式:sort 选项 参数 cat 文件名 | sort 选项
常用的选项:sort
-f 忽略大小写,默认把大写字母排在前面
eg:sort -f /opt/123.sh
-b 忽略每行前面的空格
-n 按照数字进行排序
-r 反向排序
-u 相同的数据,只显示一行,去重
-o 输出的文件名,将排序后的结果转存到指定的文件
eg:cat test.txt | sort -r
eg:将test.txt的内容按照原顺序输出搭配ky30.txt
cat -n test.txt | sort -n -o ky30.txt
3、uniq去重
用于报告或者忽略文件中连续出现的重复行,经常与sort结合使用
格式:uniq 选项 参数 或者 cat 文件名 | uniq 选项
常用选项:
-c 统计连续重复的行的次数,并且合并重复的行,并打印不会改变文件内容
-u 显示仅出现一次的行,包括不连续的重复的行
-d 仅显示重复出现的行,必须是连续的重复行
4、tr
tr 对来自标准输入的字符进行替换,压缩和删除
tr 选项 参数 也可以结合|管道符使用
常用选项:
-c 保留字符集1的字符,用字符集2来替换其他的字符
eg:echo 20.0.0.30 | tr -c "." " "
输出为:. . . 数字没了
不加-c就把.替换掉了
eg:把ABC替换成abc
echo ABC | tr "A-Z" "a-z"
这里的A-Z:用引号引起来的都是正则表达式,匹配前面的输出内容
eg:abc,把ab的内容保留,把c替换成t
echo abc | tr -c "ab" "t"
-t 默认就是替换,可以不写
-s把重复出现的字符串压缩成一个字符串,也可以替换
eg:sort -n test.txt | tr -s "123" "t"
sort -n test.txt | tr -s "\n" "\n" 把连续多个空格压缩成一个
eg:替换成空行换行
echo $PATH | tr -s ":" "\n"
5、cut
截取;和awk有相似之处,取列;对字段进行截取和裁剪
格式:cut 选项 参数 或者 cat 文件名 | cut 选项
-d 指定分割符,默认分隔符号是tab;不是空格
awk的默认分割符是空格,多个空格也会算一个
-f 按字段进行截取,指定要截取第几个字段
-complement 删除指定的字段
eg:cut -d ":" -f 1-3 /etc/passwd 取第一列第二列第三列
如果是1,3那就是取第一列和第三列
eg:head -n 2 /etc/passwd | cut -d ":" --complement -f 2
head -n 3 /etc/passwd | cut -d ":" -f 1-2
6、split 文件拆分
大文件拆分成若干小文件
-l 根据行数拆分
-b 指定文件大小来拆分
eg:cp /etc/passwd /opt
split -l 20 passwd ky30 ky30是拆分后的文件名自己命名
split -b 2m httpd-2.4.29.tar.bz2 lt 2m表示2MB
7、paste文件合并
psate a b 和cat a b 的区别:paste是左右合并 cat 是上下文合并
eg:统计当前主机的连接状态
listen 监听,等待建立连接
estab 已经建立连接,连接处于在活动状态
ss -antp 查看状态或者netstat -antp
ss -antp | grep -v "^state" | cut -d " " -f 1 | sort | uniq -c
eg:统计当前主机的连接数
Local Address 为下面当前连接的主机
ss -nt | tr -s " " | cut -d " " -f 3 | sort -n | uniq -c