1、SHELL编程Grep语句案例实战

1)Find是Linux操作系统文件和目录的路径检索、查询工具,而Grep是Linux系统下文本文件内容检索或者匹配工具,Grep称为全局正则表达式检索工具,在企业中被广泛的采用。
2)Grep工具的语法格式:
grep -option(参数) ‘word’(关键词) file(文本文件);
 Option参数:
-a(文本方式)
-c(统计)
-i(忽略大小写)
-n(行号)
-v(反选)
-o(仅匹配)
-w(词组)
-A(匹配之后)
-B(匹配之前)
-C(匹配前后)
3)Grep企业案例实战一,查找/etc/passwd文件中是否存在www用户信息,命令操作如下:
grep root /etc/passwd
grep "root" /etc/passwd
grep -w "^root" /etc/passwd
grep -i "root" /etc/passwd
4)Grep企业案例实战二,ifconfig看到网卡信息,只查看IP地址所在行信息,命令操作如下:
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
5)通配符类型详解:
*
0个或者多个字符、数字;
?
匹配任意一个字符;
#
表示注解;
|
管道符号;
;
多个命令连续执行;
&
后台运行指令;
!
逻辑运算非;
[ ]
内容范围,匹配括号中内容;
{ }
命令块,多个命令匹配。
6)正则表达式详解:
*
前一个字符匹配0次或多次;
.
匹配除了换行符以外任意一个字符;.*
代表任意字符;
^
匹配行首,即以某个字符开头;
$
匹配行尾,即以某个字符结尾;
\(..\)
标记匹配字符;
[]
匹配中括号里的任意指定字符,但只匹配一个字符;
[^]
匹配除中括号以外的任意一个字符;
\
转义符,取消特殊含义;
\<
锚定单词的开始;
\>
锚定单词的结束;
{n}
匹配字符出现n次;
{n,}
匹配字符出现大于等于n次;
{n,m}
匹配字符至少出现n次,最多出现m次;
\w
匹配文字和数字字符,不匹配符号;
\W
\w的反置形式,匹配一个或多个非单词字符,匹配
符号;
\b
单词锁定符;
\s
匹配任何空白字符;
\d
匹配一个数字字符,等价于[-]。
7)常用GREP工具企业演练案列:
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地址
2、SHELL编程Awk语句案例实战
Awk主要是用于对文本文件进行处理,通常是逐行处理,其语法参数格式为,AWK常用参数、变量、函数详解如下:
awk  'pattern  + {action}'   file
(1) AWK基本语法参数详解:
单引号' '是为了和shell命令区分开;
大括号{ }表示一个命令分组;
pattern是一个过滤器,表示匹配pattern条件的行才进行Action处理; action是处理动作,常见动作为Print;
使用#作为注释,pattern和action可以只有其一,但不能两者都没有。
(2) AWK内置变量详解:
FS 分隔符,默认是空格;
OFS 输出分隔符;
NR 当前行数,从1开始;
NF 当前记录字段个数;
$ 当前记录;
$~$n 当前记录第n个字段(列)。
(3) AWK内置函数详解:
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开始的子串。
(4) AWK常用操作符,运算符及判断符:
++ --
增加与减少( 前置或后置);
^ **
指数( 右结合性);
! + -
非、一元(unary) 加号、一元减号;
+ - * / %
加、减、乘、除、余数;
< <= == != > >=
数字比较; &&
逻辑and;
||
逻辑or;
= += -= *= /= %= ^= **=
赋值。
(5) AWK与流程控制语句:
if(condition) { } else { };
while { };
do{ }while(condition);
for(init;condition;step){ };
break/continue。
常用AWK工具企业演练案列:
(1) AWK打印硬盘设备名称,默认以空格为分割:
df  -h|awk '{print $1}'
(2) AWK以空格、冒号、\t、分号为分割:
awk -F '[ :\t;]' '{print $1}'   jfedu.txt
(3) AWK以冒号分割,打印第一列,同时将内容追加到/tmp/awk.log下:
awk -F: '{print $1 >>"/tmp/awk.log"}' jfedu.txt
(4) 打印jfedu.txt文件中的第3行至第5行,NR表示打印行,$0表示文本所有域:
awk 'NR==3,NR==5 {print}'   jfedu.txt
awk 'NR==3,NR==5 {print $0}'   jfedu.txt
5) 打印jfedu.txt文件中的第3行至第5行的第一列与最后一列:
awk 'NR==3,NR==5 {print $1,$NF}'   jfedu.txt
6) 打印jfedu.txt文件中,长度大于80的行号:
awk  'length($0)>80 {print NR}'     jfedu.txt
7) AWK引用Shell变量,使用-v或者双引号+单引号即可:
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
9) Awk指定文件jfedu.txt第一列的总和:
cat jfedu.txt |awk '{sum+=$1}END{print sum}'
10) AWK NR行号除以2余数为0则跳过该行,继续执行下一行,打印在屏幕:
awk -F: 'NR%2==0 {next} {print NR,$1}' /etc/passwd
11) AWK添加自定义字符:
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语句)的更多相关文章

  1. Shell编程之循环语句与echo的用法

    Shell编程之循环语句与echo的用法 目录 Shell编程之循环语句与echo的用法 一.echo用法 1. echo常用选项 2. 常用的转义字符 3. 特殊符号%.#的用法 二.循环语句 1. ...

  2. SHELL用法七(Sed语句)

    1.SHELL编程Sed语句案例实战 1)SHELL编程四剑客之二的Sed工具,主要是用于Linux系统文本文件的编辑. 打印的,也称为非交互模式编辑器(vi|vim交互模式编辑器),Sed工具的语法 ...

  3. 转 功能强大的shell:if条件语句

    原文 http://blog.zol.com.cn/2322/article_2321767.html 功能强大的shell:if条件语句 if语句测试条件,测试条件返回真(0)或假(1)后,可相应执 ...

  4. shell脚本-循环选择语句

    shell脚本-循环选择语句 过程式编程语言: 顺序执行 选择执行 循环执行 注:条件中的变量,可以在执行语句中使用,不用在加上"$". if语句 根据命令的退出状态来执行命令 单 ...

  5. shell三剑客之grep

    背景 对于很多的测试人员来说,grep命令都很熟悉,用的最多的比如去查找指定的进程:ps -ef | grep *** ,其中***为进程名或进程号,这里我们只用到的grep的最基础功能-从标准输出中 ...

  6. shell脚本之循环语句与函数

    shell脚本之循环语句与函数 echo的用法: echo -n #表示不换行输出 echo -e #输出转义字符,将转义后的内容输出到屏幕上 转义字符: \n :换行,被输出的字符从"\n ...

  7. shell 脚本之判断语句 if 详解

    使用 Linux 系统这么长时间,对 shell 脚本也算是比较熟悉.其实不管是搞开发,还是搞运维,shell 脚本都是必备的基本技能.这次抽时间好好总结一下 shell 方面的知识,综合的再学习一下 ...

  8. Linux编程 9 (shell类型,shell父子关系,子shell用法)

    一. shell类型 1.1  交互式 bin/ shell程序 当用户登录到某个虚拟控制台终端或是在GUI中启动终端仿真器时,默认的shell程序就会开始运行.系统启动什么样的shell程序取决于你 ...

  9. 2018年11月10日 input,print,pass 用法,条件语句+字符串

    name=input('请输入用户名')#永远等待用户输入 password=input('请输入密码') print(name) print(password) 变量定义的规则: 变量名只能是 字母 ...

随机推荐

  1. u-boot中filesize环境变量【转载】

    转载地址:https://blog.csdn.net/fzs333/article/details/48518559 U-Boot中的环境命令可以使用$(filesize)来确定刚下载(传输)得到的文 ...

  2. Java线程——synachronized关键字的作用(一)

    在并发编程中,多线程同时并发访问的资源叫做临界资源,当多个线程同时访问对象并要求操作相同资源时,分割了原子操作就有可能出现数据的不一致或数据不完整的情况,为避免这种情况的发生,我们会采取同步机制,以确 ...

  3. 01 语言基础+高级:1-8 File类与IO流_day10【缓冲流、转换流、序列化流】

    day10[缓冲流.转换流.序列化流] 主要内容 缓冲流 转换流 序列化流 打印流 教学目标 能够使用字节缓冲流读取数据到程序 能够使用字节缓冲流写出数据到文件 能够明确字符缓冲流的作用和基本用法 能 ...

  4. Linux 下载安装

    安装教程:https://www.runoob.com/linux/linux-install.html Linux图形界面与命令行界面切换https://blog.csdn.net/ab522628 ...

  5. UML-如何创建领域模型?

    以当前迭代中所要设计的需求为界: 1.寻找概念类 2.将其绘制为类图 3.添加关联和属性

  6. 2.node。框架express

    node.js就是内置的谷歌V8引擎,封装了一些对文件操作,http请求处理的方法 使你能够用js来写后端代码 用node.js开发脱离浏览器的js程序,主要用于工具活着服务器,比如文件处理. 用最流 ...

  7. 小白学习之pytorch框架(1)-torch.nn.Module+squeeze(unsqueeze)

    我学习pytorch框架不是从框架开始,从代码中看不懂的pytorch代码开始的 可能由于是小白的原因,个人不喜欢一些一下子粘贴老多行代码的博主或者一些弄了一堆概念,导致我更迷惑还增加了畏惧的情绪(个 ...

  8. Python笔记_第三篇_面向对象_5.一个关于类的实例(人开枪射击子弹)

    1. 我们学了类的这些东西,用这些类我们来操作一个关于类的实例. 2. 题目:人开枪射击子弹,然后具有装弹动作,然后再开枪. 第一步:设计类: 人类名:Person属性:gun行为:fire,fill ...

  9. 迅为iTOP-开发板-驱动-can和rfid配置

    在迅为开发板中,在 4412,4418 以及 6818 中,有的开发板默认配置 RFID,有的默认配 置 CAN 驱动(IMX6 默认都配置). 本文档介绍如何配置 CAN 和 RFID 的驱动. 截 ...

  10. Python——气象数据分析

    将对意大利北部沿海地区的气象数据进行分析与可视化.我们在实验过程中先会运用 Python 中 matplotlib 库的对数据进行图表化处理,然后调用 scikit-learn 库当中的的 SVM 库 ...