grep基本详细使用

 

过滤文件类容---grep

grep正则表达式应用:

#grep 【option】”pattern” 文件名称

pattern模式

      由普通字符和正则表达式的元字符组构成的条件

 

简单例子

grep "root" /etc/passwd

正则表达式的元字符

(1)匹配单个字符的元字符

. 任意单个字符(前面是一个小点)

grep "r..t" /etc/passwd

 注意:.   代表任意字符,此处有两个  .  ,代表两个任意字符,看下面的例子

  [ ]   代表或者的关系

 连续的字符范围

[a-z]  : a到z的所有小写字母

[A-Z]   : A到Z所有的大写字母

[a-zA-Z] :包含所有的大小写字母 

[0-9]  :0到9的所有数字

[a-zA-Z0-9 ]  :包含所有大小字母和数字

为了方便后面的练习,在此建立个临时文件,写入字符,当做练习的文件 

vim 1.txt
rot
rAt
rBt
r1t
root
rVCt
r4t
grep "r[a-z]t" 1.txt

grep "r[A-Z]t" 1.txt

^ 取反

[^a-z]

grep "r[^0-9]t" 1.txt 

(2)匹配字符出现的位置

^string  以string开头

 grep "^root" /etc/passwd

对首行[rbh]开头

grep "^[rbh]" /etc/passwd

不是【rbh】开头

grep "^[^rbh]" /etc/passwd

string$  以string$结尾

以bash结尾的

 grep "bash$" /etc/passwd

查看nologin的行数

grep "nologin$" /etc/passwd | wc -l

 

^$ : 代表 空行

 

查看目录名称(此处是指目录文件)

ls -l /etc/ | grep "^d"

为了方便后面的练习,在此建立个临时文件,写入字符,当做练习的文件 

vim 2.txt
a
ab
abb
abbbb
abbbbb
abbbbbbb

*  匹配其前一个字符出现任意次

  .*任意字符

 grep "ab*" 3.txt

\?   0次或者1次   可有可无

grep "ab\?" 2.txt

\+  1次或者多次   最少1次

grep "ab\+" 2.txt

\{2\}    出现两次

grep "ab\{2\}" 2.txt

\{2,5\}    最少2次,最多5次

grep "ab\{2,5\}" 2.txt

option选项

1)-i 忽略大小写

 

[root@zhang ~]# grep -i "^r" 1.txt

 

2)-o 仅显示符合正则表达式的内容,不显示整行

[root@zhang ~]# grep -o  "r..t" /etc/passwd

root

3)-v 反向过滤

[root@zhang ~]# grep -v "^#" /etc/fstab



/dev/mapper/centos-root /                       xfs     defaults        0 0

UUID=20b4a09c-ba00-41d4-a6d5-7dc24bc0a057 /boot                   xfs     defaults        0 0

/dev/mapper/centos-swap swap                    swap    defaults        0 0

 

4)-e 根据多条件过滤文件

[root@zhang ~]# grep -e "^$" -e "^#" /etc/fstab



#

# /etc/fstab

# Created by anaconda on Mon Jan  7 01:19:06 2019

4)-E 支持扩展正则表达式

grep -E "vmx|svm" /proc/cpuinfo

5)-A n 显示符合条件的后2行

[root@zhang ~]# ifconfig |grep -A 2 "netmask"

        inet 192.168.196.131  netmask 255.255.255.0  broadcast 192.168.196.255

        inet6 fe80::20c:29ff:fe8e:e21b  prefixlen 64  scopeid 0x20<link>

        ether 00:0c:29:8e:e2:1b  txqueuelen 1000  (Ethernet)

--

        inet 127.0.0.1  netmask 255.0.0.0

        inet6 ::1  prefixlen 128  scopeid 0x10<host>

        loop  txqueuelen 1000  (Local Loopback)

 

6)-B n 显示符合条件的前2行

[root@zhang ~]# ifconfig |grep -B 2 "netmask"

ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

        inet 192.168.196.131  netmask 255.255.255.0  broadcast 192.168.196.255

--



lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536

        inet 127.0.0.1  netmask 255.0.0.0

博主正在自学Linux云计算,有学习的的小伙伴可以相互交流,增强技术。


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
`grep` 是一个强大的文本搜索工具,在 Unix 和类 Unix 系统中非常常用,包括 Linux、macOS 和 BSD 等。它的全称是 "全局查找行"(GNU's Regular Expression Print),用于在文件或输入流中搜索特定模式(正则表达式)。 **详细解释:** 1. **基本用法:** `grep [选项] [模式] [文件名]` - `模式`:要查找的字符串或正则表达式。 - `文件名`:可以是一个文件,也可以使用通配符(如 * 或 ?)来匹配多个文件。 2. **选项:** - `-i` 或 `--ignore-case`:忽略大小写。 - `-v` 或 `--invert-match`:返回不匹配的行。 - `-r` 或 `--recursive`:在目录中递归搜索。 - `-n` 或 `--line-number`:显示匹配行的行号。 - `-l` 或 `--only-matching`:只显示匹配行的文件名。 3. **标准输入(-):** - 当没有提供文件名时,`grep` 会读取来自标准输入的数据,如从管道(`|`)输入。 4. **使用正则表达式:** - `grep` 支持基本的正则表达式语法,如`.`(匹配任意字符)、`*`(零次或多次)、`?`(零次或一次)等。 - 更高级的正则表达式功能可以通过扩展选项启用,如 `grep -E`(启用扩展正则表达式)或 `grep -P`(启用 Perl 正则表达式)。 5. **匹配模式的输出:** - `grep` 通常会显示包含匹配模式的行,如果未指定其他选项,输出默认是原样。 **相关问题--:** 1. 如何使用 `grep` 查找文件中的某个单词? 2. 如何结合 `grep` 和 `find` 命令递归搜索多个目录? 3. 如何使用 `grep` 忽略大小写并返回所有匹配行?

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南宫乘风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值