阿铭多次使用的grep命令格式及常用选项用法介绍

阿铭频繁地使用grep命令,那么这个命令到底有何独特之处?下面我们就来详细地探讨一番!

grep命令重要性

# grep -A2 'halt' /etc/passwd
halt7halt:/sbin:/sbin/halt
mail8mail:/var/spool/mail:/sbin/nologin
operator11operator:/root:/sbin/nologin

阿铭的操作中,grep命令频繁出现,这充分显示了它在实际应用中的关键作用。在处理计算机系统和文件时,我们常常需要依赖它来搜寻关键数据。得益于grep命令,我们能够迅速且精确地找到所需信息,从而显著提升了工作效率。

grep命令格式及选项

# grep -B2 'halt' /etc/passwd
sync5sync:/sbin:/bin/sync
shutdown6shutdown:/sbin:/sbin/shutdown
halt7halt:/sbin:/sbin/halt

# grep -C2 'halt' /etc/passwd
sync5sync:/sbin:/bin/sync
shutdown6shutdown:/sbin:/sbin/shutdown
halt7halt:/sbin:/sbin/halt
mail8mail:/var/spool/mail:/sbin/nologin
operator11operator:/root:/sbin/nologin

grep命令的常规用法是grep [-] ‘关键词’。其中,-A、-B、-C是常见的选项,-A选项后需指定数字,如-A2即显示匹配行及其后的两行;-B选项后同样跟数字,如-B2即显示匹配行及其前的两行;-C选项后也需指定数字,如-C2即显示匹配行及其上下各两行。系统默认将匹配到的字符串以红色标注,这一点相当人性化。这实际上是因为grep默认设置就是使用–color=auto选项。

# grep -n 'root' /etc/passwd
1x0/root:/bin/bash
10x0/root:/sbin/nologin

过滤关键词及输出行号

# grep -nv 'nologin' /etc/passwd
1x0/root:/bin/bash
6x0/sbin:/bin/sync
7x0/sbin:/sbin/shutdown
8x0/sbin:/sbin/halt
45x1000/home/aminglinux:/bin/bash

筛选掉含有特定关键词的行并显示行号,有助于我们精确地找到所需信息。例如,在处理大量文件时,通过行号可以更快捷地定位到特定内容。同样,排除不含该关键词的行并显示行号也很有用,比如在剔除无关信息时,这种方法可以帮助我们识别出不需要的行。借助行号的明确标注,便于后续的操作处理。

# grep '[0-9]' /etc/inittab
# multi-user.target: analogous to runlevel 3
# graphical.target: analogous to runlevel 5

正则表达式在grep中的应用

# grep -v '[0-9]' /etc/inittab
# inittab is no longer used.
#
# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
#
# systemd uses 'targets' instead of runlevels. By default, there are two main targets:
#
#
# To view current default target, run:
# systemctl get-default
#

图片[1]-阿铭多次使用的grep命令格式及常用选项用法介绍-东山笔记

# To set a default target, run: # systemctl set-default TARGET.target

在正则表达式中,符号“^”代表一行的起始位置,而“$”则表示一行的结束。对于空行,我们可以用“^$”来表示。在自定义文件时,中括号“[]”特别有用,比如“[0-9]”可以用来匹配数字,而“[0-9a-zA-Z]”则可以筛选出数字和大小写字母。使用“r.o”可以筛选出包含任意字符的“r”和“o”之间的行,而“.*”则可以匹配任意数量的任意字符,包括空行,从而能够匹配到“/etc/”目录下的所有行。

[plugins]
#disable = rpm, selinux, dovecot
[tunables]
#rpm.rpmva = off
#general.syslogsize = 15
# grep -v '^#' /etc/sos.conf
[plugins]
[tunables]

指定字符出现次数

# grep -v '^#' /etc/sos.conf |grep -v '^$'
[plugins]
[tunables]

设定需要筛选的字符重复的频次,需使用花括号{},其中包含数字,来指明该字符需重复的特定次数,同时要注意花括号{}需要用转义字符括起来。此外,还可以通过{n1,n2}的形式来指定一个范围,其中n1和n2分别代表起始和结束的次数。< n2时,代表重复n1到n2次,n2为空则表示大于等于n1次。借助这方法,能更精准地筛选出符合要求的内容。

egrep工具扩展功能

# mkdir /tmp/1
# cd /tmp/1
# vim test.txt //内容如下
123
abc
456
abc2323
#laksdjf
Alllllllll

# grep '^[^a-zA-Z]' test.txt
123
456
#laksdjf
# grep '[^a-zA-Z]' test.txt
123
456
abc2323
#laksdjf

egrep是grep的一个升级版,具备grep无法实现的功能。它使用加号“+”来匹配前面字符的一个或多个实例,同时花括号“{}”可以直接使用,无需转义。括号“()”可以用来表示一个整体,例如“(rooo|rato)”可以筛选出包含“rooo”或“rato”的行,而“(oo)+”则表示一个或多个“oo”,可以与其他符号结合,从而扩展了匹配的规则。

在实际操作过程中,很多人偏爱使用grep,也有人更倾向于egrep。何不点赞并转发这篇文章,和大家分享一下你个人的使用体验。

# grep 'r.o' /etc/passwd
root0root:/root:/bin/bash
operator11operator:/root:/sbin/nologin

© 版权声明
THE END
喜欢就支持一下吧
分享