运维三剑客---grep、sed、awk
1.grep
grep 过滤的几种用法,按照后缀参数
-n:显示行号
-o:只显示匹配的内容
-q:后台模式,没有任何输出。
如果需要查看是否执行成功,可以使用$? -----------------> 显示0即执行成功,非0即执行失败
-A:显示成功内容以及后几行
-B:显示成功内容以及前几行
-C:显示成功内容以及前后几行
-c:显示具体匹配成功了多少行
-i:忽略大小写
-w:匹配单词(连续的字母大小写)
-v:过滤掉不相关的内容,后续可以匹配正则表达式(示例中过滤了#开头以及‘空格’ 内容)
2.sed用法:
sed -r ‘s/(正则)(正则)(正则)/\1\2\3/参数’ 文件名称
参数包含如下:
a:追加内容
i:插入内容
c:修改内容
d:删除内容
p:打印内容
g:将整行内容全部修改(如果不加g,则只修改整行内第一个内容)
3.awk:
awk -F :(分隔符) '{print $1,$2}' 文件名 ($0表示取所有)
($0表示取所有)
(NF表示多少分隔符的内容)
(NR表示行号)
awk -F: 'NR==1{print $1}' 2.txt 只打印第一行内容
akw -F: 'NR==1 {print,"............" $1}' 2.txt 自定义出入格式
akw -F: 'NR>=3&& NR<=5 {print,"............" $1}' 2.txt 处理第三行到第五行之间的内容
akw -F: 'NR<=3|| NR>=5 {print,"............" $1}' 2.txt 处理小于等于3行或者大于等于5行的内容
配合正则如下:
awk -F: '/nologin$/{print $1}' 2.txt //之间存放正则表达式,处理以nologin结尾的内容
awk -F: '$1~/^r.*t$/{print NR,$3}' 2.txt 匹配第一个字符内容中的以r开头 t结尾的内容
awk -F: '$3>=3 {print NR,$1}' 2.txt 匹配第三个内容大于等于3的内容,打印行号和第一个字符
count=3
awk -v x=$count -F:'$3>=x {print NR,$0}' 2.txt 定义count变量,然后在awk中取变量,处理数据
-F 如果不指定内容,则以空格或者多个空格为分隔符。
灵活取IP地址:
还可以多个连着用,简直牛批