Linux Shell 012-文本行过滤工具grep

发布时间:2023年12月28日

Linux Shell 012-文本行过滤工具grep

本节关键字:Linux、Bash Shell、文本行过滤
相关指令:grep

grep介绍

grep是文本行过滤工具,用于根据关键字进行行过滤。

grep语法

基本语法: grep [选项] ‘关键字’ 文件名

grep常用选项

选项说明
-i不区分大小写
-v查找不包含指定内容的行,反向选择
-w按单词搜索
-o打印匹配关键字
-c统计匹配到的行数
-n显示行号
-r逐层遍历目录查找
-A显示匹配行及后面多少行
-B显示匹配行及前面多少行
-C显示匹配行前后多少行
-l只列出匹配的文件名
-L列出不匹配的文件名
-e使用正则匹配
-E使用扩展正则匹配
^key以关键字开头
key$以关键字结尾
^$匹配空行
–color=auto可以将找到的关键词部分加上颜色的显示

grep颜色显示

# 临时设置,只针对当前终端和当前用户生效
$ alias grep='grep --color=auto'

# 永久设置:
# 1)全局(针对所有用户生效)
$ vim /etc/bashrc
alias grep='grep --color=auto'
source /etc/bashrc

# 2)局部(针对具体的某个用户)
$ vim ~/.bashrc
alias grep='grep --color=auto'
source ~/.bashrc

grep实例

命令语句说明
$ grep -i root passwd忽略大小写匹配包含root的行
$ grep -w ftp passwd精确匹配ftp单词
$ grep -w hello passwd精确匹配hello单词;自己添加包含hello的行到文件
$ grep -wo ftp passwd打印匹配到的关键字ftp
$ grep -n root passwd打印匹配到root关键字的行号
$ grep -ni root passwd忽略大小写匹配统计包含关键字root的行
$ grep -nic root passwd忽略大小写匹配统计包含关键字root的行数
$ grep -i ^root passwd忽略大小写匹配以root开头的行
$ grep bash$ passwd匹配以bash结尾的行
$ grep -n ^$ passwd匹配空行并打印行号
$ grep ^# /etc/vsftpd/vsftpd.conf匹配以#号开头的行
$ grep -v ^# /etc/vsftpd/vsftpd.conf匹配不以#号开头的行
$ grep -A 5 mail passwd匹配包含mail关键字及其后5行
$ grep -B 5 mail passwd匹配包含mail关键字及其前5行
$ grep -C 5 mail passwd匹配包含mail关键字及其前后5行

查看系统运行级别

$ grep -v '^#' /etc/inittab | cut -d: -f2
$ grep '^id' /etc/inittab |cut -d: -f2
$ grep "initdefault:$" /etc/inittab | cut -c4
$ grep -v ^# /etc/inittab | cut -c4
$ grep 'id:' /etc/inittab | cut -d: -f2
文章来源:https://blog.csdn.net/qq_45157350/article/details/135169415
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。