SHELL用法八(Grep语句)
1、SHELL编程Grep语句案例实战
-a(文本方式) -c(统计) -i(忽略大小写) -n(行号) -v(反选) -o(仅匹配) -w(词组) -A(匹配之后) -B(匹配之前) -C(匹配前后)
grep root /etc/passwd grep "root" /etc/passwd grep -w "^root" /etc/passwd grep -i "root" /etc/passwd
ifconfig|grep netmask
ifconfig|grep -w inet
ifconfig|grep -w 255ifconfig|grep -E "172|127"ifconfig|grep -E "([0-9]{1,3}\.){3}[0-9]{1,3}"
`;do touch jf$i.txt;echo jfedu jf$i >jf$i.txt;echo cat jf$i.txt;cat jf$i.txt;echo ----------;done
*
0个或者多个字符、数字;
?
匹配任意一个字符;
#
表示注解;
|
管道符号;
;
多个命令连续执行;
&
后台运行指令;
!
逻辑运算非;
[ ]
内容范围,匹配括号中内容;
{ }
命令块,多个命令匹配。
*
前一个字符匹配0次或多次;
.
匹配除了换行符以外任意一个字符;.*
代表任意字符;
^
匹配行首,即以某个字符开头;
$
匹配行尾,即以某个字符结尾;
\(..\)
标记匹配字符;
[]
匹配中括号里的任意指定字符,但只匹配一个字符;
[^]
匹配除中括号以外的任意一个字符;
\
转义符,取消特殊含义;
\<
锚定单词的开始;
\>
锚定单词的结束;
{n}
匹配字符出现n次;
{n,}
匹配字符出现大于等于n次;
{n,m}
匹配字符至少出现n次,最多出现m次;
\w
匹配文字和数字字符,不匹配符号;
\W
\w的反置形式,匹配一个或多个非单词字符,匹配
符号;
\b
单词锁定符;
\s
匹配任何空白字符;
\d
匹配一个数字字符,等价于[-]。
grep -c "test"
jfedu.txt 统计test字符总行数;
grep -i "TEST"
jfedu.txt 不区分大小写查找TEST所有的行;
grep -n "test"
jfedu.txt 打印test的行及行号;grep -v "test"
jfedu.txt 不打印test的行;
grep "test[53]"
jfedu.txt 以字符test开头,接5或者3的行;
grep "^[^test]"
jfedu.txt 显示输出行首不是test的行;
grep "[Mm]ay"
jfedu.txt
匹配M或m开头的行;
grep "K…D"
jfedu.txt
匹配K,三个任意字符,紧接D的行;
grep "[A-Z][9]D"
jfedu.txt
匹配大写字母,紧跟9D的字符行;
grep "T\{2,\}"
jfedu.txt 打印字符T字符连续出现2次以上的行;
grep "T\{4,6\}"
jfedu.txt 打印字符T字符连续出现4次及6次的行;
grep -n "^$"
jfedu.txt
打印空行的所在的行号;
grep -vE "#|^$"
jfedu.txt
不匹配文件中的#和空行;
grep
--color -ra -E
"db|config|sql" * 匹配包含db或者config或者
sql的文件;
grep
--color -E "\<([0-9]{1,3}\.){3}([0-9]{1,3})\>"
jfedu.txt 匹配
IPV4地址
awk 'pattern + {action}' file
单引号' '是为了和shell命令区分开;
大括号{ }表示一个命令分组;
pattern是一个过滤器,表示匹配pattern条件的行才进行Action处理; action是处理动作,常见动作为Print;
使用#作为注释,pattern和action可以只有其一,但不能两者都没有。
FS 分隔符,默认是空格; OFS 输出分隔符; NR 当前行数,从1开始; NF 当前记录字段个数; $ 当前记录; $~$n 当前记录第n个字段(列)。
gsub(r,s):在$0中用s代替r; index(s,t):返回s中t的第一个位置; length(s):s的长度; match(s,r):s是否匹配r; split(s,a,fs):在fs上将s分成序列a; substr(s,p):返回s从p开始的子串。
++ -- 增加与减少( 前置或后置); ^ ** 指数( 右结合性); ! + - 非、一元(unary) 加号、一元减号; + - * / % 加、减、乘、除、余数; < <= == != > >= 数字比较; && 逻辑and; || 逻辑or; = += -= *= /= %= ^= **= 赋值。
if(condition) { } else { };
while { };
do{ }while(condition);
for(init;condition;step){ };
break/continue。
df -h|awk '{print $1}'
awk -F '[ :\t;]' '{print $1}' jfedu.txt
awk -F: '{print $1 >>"/tmp/awk.log"}' jfedu.txt
awk 'NR==3,NR==5 {print}' jfedu.txt
awk 'NR==3,NR==5 {print $0}' jfedu.txt
awk 'NR==3,NR==5 {print $1,$NF}' jfedu.txt
awk 'length($0)>80 {print NR}' jfedu.txt
awk -v STR=hello '{print STR,$NF}' jfedu.txtSTR="hello";echo| awk '{print "'${STR}'";}'
8) AWK以冒号切割,打印第一列同时只显示前5行:
|awk -F: '{print $1}'awk -F: 'NR>=1&&NR<=5 {print $1}' /etc/passwd
cat jfedu.txt |awk '{sum+=$1}END{print sum}'
awk -F: 'NR%2==0 {next} {print NR,$1}' /etc/passwd
ifconfig eth0|grep "Bcast"|awk '{print "ip_"$2}'
12) AWK与if组合实战,判断数字比较:
| awk '{ if(($1>$2)||($1>$3)) { print $2} else {print $1} }'
13) AWK与数组组合实战,统计passwd文件用户数:
awk -F ':' 'BEGIN {count=0;} {name[count] = $1;count++;}; END{for (i =
; i < NR; i++) print i, name[i]}' /etc/passwd
14) awk分析Nginx访问日志的状态码404、502等错误信息页面,统计次数大于20的IP地址。
awk '{if ($9~/502|499|500|503|404/) print $1,$9}' access.log|sort|uniq –c|sort –nr | awk '{if($1>20) print $2}'
15) Awk统计服务器状态连接数:
netstat -an | awk '/tcp/ {s[$NF]++} END {for(a in s) {print a,s[a]}}'
netstat -an | awk '/tcp/ {print $NF}' | sort | uniq -c
SHELL用法八(Grep语句)的更多相关文章
- Shell编程之循环语句与echo的用法
Shell编程之循环语句与echo的用法 目录 Shell编程之循环语句与echo的用法 一.echo用法 1. echo常用选项 2. 常用的转义字符 3. 特殊符号%.#的用法 二.循环语句 1. ...
- SHELL用法七(Sed语句)
1.SHELL编程Sed语句案例实战 1)SHELL编程四剑客之二的Sed工具,主要是用于Linux系统文本文件的编辑. 打印的,也称为非交互模式编辑器(vi|vim交互模式编辑器),Sed工具的语法 ...
- 转 功能强大的shell:if条件语句
原文 http://blog.zol.com.cn/2322/article_2321767.html 功能强大的shell:if条件语句 if语句测试条件,测试条件返回真(0)或假(1)后,可相应执 ...
- shell脚本-循环选择语句
shell脚本-循环选择语句 过程式编程语言: 顺序执行 选择执行 循环执行 注:条件中的变量,可以在执行语句中使用,不用在加上"$". if语句 根据命令的退出状态来执行命令 单 ...
- shell三剑客之grep
背景 对于很多的测试人员来说,grep命令都很熟悉,用的最多的比如去查找指定的进程:ps -ef | grep *** ,其中***为进程名或进程号,这里我们只用到的grep的最基础功能-从标准输出中 ...
- shell脚本之循环语句与函数
shell脚本之循环语句与函数 echo的用法: echo -n #表示不换行输出 echo -e #输出转义字符,将转义后的内容输出到屏幕上 转义字符: \n :换行,被输出的字符从"\n ...
- shell 脚本之判断语句 if 详解
使用 Linux 系统这么长时间,对 shell 脚本也算是比较熟悉.其实不管是搞开发,还是搞运维,shell 脚本都是必备的基本技能.这次抽时间好好总结一下 shell 方面的知识,综合的再学习一下 ...
- Linux编程 9 (shell类型,shell父子关系,子shell用法)
一. shell类型 1.1 交互式 bin/ shell程序 当用户登录到某个虚拟控制台终端或是在GUI中启动终端仿真器时,默认的shell程序就会开始运行.系统启动什么样的shell程序取决于你 ...
- 2018年11月10日 input,print,pass 用法,条件语句+字符串
name=input('请输入用户名')#永远等待用户输入 password=input('请输入密码') print(name) print(password) 变量定义的规则: 变量名只能是 字母 ...
随机推荐
- atan2&sin
//弧度转化角度:弧度*180/PI //角度转化弧度:角度*PI/180 #include <math.h> #include <stdio.h> const double ...
- 90.QuerySet API方法使用详解:distinct
distinct:去掉获取的数据中的重复数据,这个方法如果底层使用的数据库是mysql,那么就不能传递任何参数. (1)比如以下我们想要实现提取所有价格超过80元的图书,并且删掉那些重复的,那么可以使 ...
- 计蒜客 密码锁(BFS)
https://www.jisuanke.com/course/1797/121114 Description 现在一个紧急的任务是打开一个密码锁.密码由四位数字组成,每个数字从 1 到 9 进行编号 ...
- www.wolframalpha.com
单个查询 http://www.wolframalpha.com/input/?source=nav&i=simplify+radical+sqrt(567) notebook https:/ ...
- 吴裕雄--天生自然GPU配置:查看本机显卡是否支持GPU
NVIDIA的GF8级别以上的显卡才能支持physx物理加速(即GPU加速),ATI的显卡不支持. 打开:设备管理器,点击:显示适配器
- docker---安装docker
今天开始要初步的学习 docker 了,这也是进入虚拟化方向的一个步骤,学习一个东西首先要从搭建环境开始,哈哈 安装环境及版本: 系统:Ubuntu18.04 STL Docker 版本:19.03. ...
- 题解 P1884 【[USACO12FEB]过度种植(银)Overplanting 】
什么,扫描线需要线段树? 那我第一个不干啊(其实是不会写) 这里介绍一种裸的扫描线: 我们根据x排序,对于相等的 \(x\) ,将 \(y\) 进入和退出分类讨论,然后全部放进set里面.每次 \(x ...
- 如何正确理解SQL关联子查询
一.基本逻辑 对于外部查询返回的每一行数据,内部查询都要执行一次.在关联子查询中是信息流是双向的.外部查询的每行数据传递一个值给子查询,然后子查询为每一行数据执行一次并返回它的记录.然后,外部查询根据 ...
- Sublime Text3 作Markdown编辑器 配置
准备 Sublime 配置 1 Package Control 2 安装插件 测试 其他 1. 准备 Windows操作系统 Sublime Text3 编辑器 Web浏览器 2. Sublime 配 ...
- Go-开发环境搭建
02-开发环境搭建 目录 一 下载地址 二 安装 Linux安装 Windows安装 Mac安装 三 测试安装 四 命令介绍 基本介绍 build 和 run 命令 get 命令 一 下载地址 安 ...