linux基础之grep命令

Linux基础之grep命令

grep命令是linux下的行过滤工具,参数繁多,功能比较强大,用起来比较方便,下面就将grep及其egrep分模块讲述其功能。

1.Grep:根据模式搜索文本,并将符合模式的文本行显示出来

2.Grep的语法:Grep  [option]   PATTERN  [file…]

Pattern: 文本字符和正则表达是元字符组合而成匹配条件

3.grep的常用选项:

-i: 不区分字符的大小写(只适用于单字符);

-I:字符的大写;

--color: 匹配的串用高亮颜色显示;

alias   grep=‘grep --color‘

-v: 显示没有被模式匹配到的行;

-o: 只显示被模式匹配到的字符串;

-n:显示匹配行及行号;

-s:不显示不存在或没有匹配文本的错误信息;

-E:扩展正则表达式;

-A|B #:显示前(后)两行;

-C#:前后几行;

-e: 制定多个匹配模式

Eg1:在/etc/passwd 下 找到有root 和home关键字并统计下来。

[[email protected] ~]# grep -e root -e home -c /etc/passwd

4.基本正则表达式元字符:

4.1 grep字符匹配:

[]:指定范围内的任意单个字符

[^]:匹配指定范围外的任意单个字符

. :匹配任意单个字符

[:digit:]数字[:space:]空白 [:lower:]小写字母 [:upper:]大写字母 [:alpha:]代表字母 [:alnum:]代表字母与数字字符

4.2 grep匹配次数(贪婪模式):用在要制定次数的字符后面,用于制定前面的字符要出现的次数;

*:匹配其前面的字符的任意次

.* :任意长度的任意字符

\?:匹配其前面的字符1次或0次

\+: 匹配其前面的字符至少一次;

\{m\}:匹配前面的字符m次;

\{m,n\}: 匹配其前面的字符至少m次最多n次;( egrep匹配{m,n}时:不再需要\\;)

\{0,n\} :匹配前面的字符最多n次;

\{m,\} :匹配前面的字符至少m次;

Eg2:匹配file中a最多3次做少1次的字符

Grep    ‘a\{1,3\}b‘  file

5.grep的位置锚定:

^ :锚定行首,用于模式的最左侧;

$:锚定行尾,用于模式的最右侧;

^PATTERN$ :用于模式匹配整行;

^$:空行     ^[[:space:]]*$

\<|\b:其后面的任意字符必须作为单词的首部出现(出现单词模式的左侧)即单词的开头;

\>|\b:其前面的任意字符必须作为单词的尾部出现(出现在单词模式的右侧)即单词的结尾;

\<PATTERN\>:匹配整个单词;

6.grep的分组:

\(\)   将一个或多个字符捆绑在一起,当做一个整体进行处理;

\(ab\)*  :ab可以出现的任意次数

Note :分组括号中的模式匹配到的内容会被正则表达式引擎记录与内部的变量中;这些变量的命令方式为: \1,\2,\3…

\1:从左侧起,第一个左括号以及与之匹配右括号之间的模式所匹配到的字符;

\2:第二个。。。

\3:第三个。。。

以下几个综合性的练习题来练练手:

1>.显示/proc/meminfo文件中以大小s开头的行:

[[email protected] ~]# grep ‘^[Ss]‘  /proc/meminfo

[[email protected] ~]# grep -i ‘^s‘  /proc/meminfo

2>.显示/etc/passwd文件中不以/bin/bash结尾的行:

[[email protected] ~]# grep -v ‘/bin/bash$‘  /etc/passwd

3>.显示/etc/passwd文件中ID号最大的用户的用户名:

[[email protected] ~]# sort -t: -k3 -n /etc/passwd | tail -1 | cut -d: -f1

4>.如果用户root存在,显示其默认的shell程序:

[[email protected] ~]# id root &> /dev/null && grep "^root\>" /etc/passwd | cut -d: -f7

/bin/bash

**先判断root用户是否存在,再显示其默认的shell

5>.找出/etc/passwd中的两位或三位数:

[[email protected] ~]# grep  "\b[0-9]\{2,3\}\b" /etc/passwd

6>. 显示/etc/rc.d/rc.sysinit文件中,至少以一个空白字符开头的且后面存在非空白字符的行:

[r[email protected] ~]# grep "^[[:space:]]\+[^[:space:]]"  /etc/rc.d/rc.sysinit

7>.找出“netstat -tan”命令的结果中以‘LISTEN’后跟0、1或多个空白字符结尾的行:

[[email protected] ~]# netstat  -tan | grep "LISTEN[[:space:]]*$"

8>. 添加用户bash、testbash、basher以及nologin(其shell为/sbin/nologin):而后找出/etc/passwd文件中用户名同shell名的行:

[[email protected] ~]# ls /home

bash  chang  nologin  test  testbash       (已添加所需要的用户)

[[email protected] ~]# grep "^\([[:alnum:]]\+\>\).*\1$"  /etc/passwd

7.Grep  -E=egrep

7.2.次数匹配:

* :

?  :0或1次;

+   :匹配其前面字符至少一次;

7.3.位置锚定:

其他与grep一样

\<(\b):词首

\>(\b):词尾

7.4.分组:

():

向后引用: \1,\2,\3:

Eg3:  a |b:a or b

C|cat  :  C 或 cat

(C|c)at  :Cat或者cat

Eg4:寻找1-255之间的整数

egrep   --color ‘\<([1-9][1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>‘   file

fgrep:不支持正则表达式搜索,查询速度比grep命令快,但是不够灵活:它只能找到固定的文本,而不是规则表达式。

时间: 2024-10-13 06:42:16

linux基础之grep命令的相关文章

【Linux基础】常用命令大全

Linux基础之常用命令大全 系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI) hdparm -i /dev/hda 罗列一个磁盘的架构特性 hdparm -tT /dev/sda 在磁盘上执行测试性读取操作 cat /proc/cpuinfo 显示CPU info的信息 cat /proc/interrupts 显示中断 cat /

Linux基础文本查看命令之 cat,tac,more,less,head,tail

在使用linux的过程中多多少少都会涉及到文本的操作,因此掌握一些文本操作的工具命令能大大的提高我们的工作效率. cat命令 cat命令的用途是链接文件或标准输入并打印.这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者是从标准输入读取内容并显示,它常与重定向符号配合使用. 1)命令格式 cat    [选项]    [FILENAME] 2)命令功能 将文件或标准输入组合输出到标准输出. 3)命令参数 -E:在每行结束处显示 $ -n:对输出的所有行编号 -s:不输出多行空行 4)常

Linux基础知识&mdash;&mdash;shell命令类型及命令使用帮助

加入马帮有一段时间了,看到群里面大总管要检查博客,才意识到,原来我还没有写过作业.俗话说的好,时间是把杀猪刀!!!咳咳,其实想说,马哥视频忒长,内容贼多,对于文笔不好我来说,写作业压力山大啊,有木有.嗯.嗯,长话短说,进入正题. 两个星期过去,课程进度有点掉队,这篇博文主要记录基础命令课程知识,用于梳理知识点并加深印象,为今后行走linux之路打下坚实基础的好开端,完成该博文并回顾相关知识点后,期望加快学习步伐,稳扎稳打,跟上进度,good good study,day day up! 1.  

深入理解Linux中的grep命令

介绍 Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户. grep [-acinv] [--color=auto] '查找字符串' filename 参数: -a :将binary文件以text文件的方式查找数据 -c :计算找到‘查找字符串'的次数 -i :忽略大小写的区别,即把大小写视为相同 -n :顺便输出行号

Linux入门基础之grep命令详解及正则表达式

grep命令是linux下经常使用的命令之一,能根据用户指定的模式(pattern)对文本进行过滤,显示出匹配到的行.其命令格式为: grep [OPTIONS] PATTERN [FILE] 例如:我们要查找网卡0中配置的IP地址(该文件路径: /etc/sysconfig/network-scripts/ifcfg-eth0)---grep 'IPADDR' /etc/sysconfig/network-scripts/ifcfg-eth0 (注:alias grep='grep --col

Linux基础之常用命令(二)

一. Linux系统上命令通用格式为: COMMAND    [OPTIONS]    [ARGUMENTS] 命令     选项      参数 1.  命令 命令可分为两类:内置命令和外部命令 内置命令:由shell自带的命令 例如:cd,break,(un)alias,type,file,history,pwd--是系统在启动之初就已经调入到内存中,是常驻内存之中,执行效率高 外部命令:独立的可执行文件,文件即命令:系统根据环境变量中的设置查找来执行.例如:ls.ifconfig.user

windows下类似Linux下的grep命令

今天要查看windws下代理服务器有哪些IP连接过来,但使用 netstat -na 后出现很多连接会话,不方便查看. 想到Linux下的grep非常方便,于是网络上搜寻,还是有类似的命令findstr,改为 netstat -na | findstr 3128 方便很多.

Linux find、grep命令详细用法

在linux下面工作,有些命令能够大大提高效率.本文就向大家介绍find.grep命令,他哥俩可以算是必会的linux命令,我几乎每天都要用到他们.本文结构如下:find命令 find命令的一般形式 find命令的常用选项及实例 find与xargs grep命令 grep命令的一般形式 grep正则表达式元字符集(基本集) grep命令的常用选项及实例 1.find命令find命令是一个无处不在命令,是linux中最有用的命令之一.find命令用于:在一个目录(及子目录)中搜索文件,你可以指定

linux 基础运维命令

Linux运维日常命令操作 1.linux启动过程 开启电源 --> BIOS开机自检 --> 引导程序lilo或grub --> 内核的引导(kernel boot)--> 执行init(rc.sysinit.rc)--> mingetty(建立终端) --> shell 2.网卡绑定多IP ifconfig eth0:1 192.168.1.99 netmask 255.255.255.0 3.设置DNS.网关 echo "nameserver 202.1