Linux三剑客(grep、sed、awk)【一、grep】

grep

Global search REgular expression and Print out the line
作用:文本搜索工具,根据用户指定的“模式(过滤条件)”对目标文本逐行进行匹配检查,打印匹配到的行
模式:由正则表达式的 元字符 及 文本字符 所编写出的 过滤条件

语法:
grep [options] [pattern] file
命令  参数  匹配模式  文件数据
	-i : ignorecase,忽略字符的大小写;
	-o : 仅显示匹配到的字符串本身;
	-v, --invert-mathch:显示不能被模式匹配到的行;
	-E : 支持使用扩展的正则表达式元字符;
	-q, --quiet, --silent: 静默模式,即不输出任何信息。

grep命令是Linux系统中最重要的命令之一,功能是从 文本文件 或 管道数据流 中筛选匹配的 行 和 数据,如果再配合正则表达式,功能十分强大,是Linux运维人员必备的命令;
grep命令里的 匹配模式 就是你想要找的东西,可以是 普通的文字符号,也可以是正则表达式。

参数选项解释说明
-v排除匹配结果
-n显示匹配行与行号
-i不区分大小写
-c只统计匹配的行数
-E使用egrep的命令
–color=auto为grep过滤结果添加颜色
-w只匹配过滤的单词
-o只输出匹配的结果

通用正则表达式实践

grep -i "root" pwd.txt -n
# 输出pwd.txt文件中 有root字符串的行 -i 忽略大小写,-n 显示行号
grep -r "root" pwd.txt -c
# 找出有几行有root
grep '^$' tmp.txt -n
# 显示空行
grep '^$' tmp.txt -n -v
# 显示除了空行别的内容

grep '^#' tmp.txt -v
# 显示除注释以外的内容
grep '^#' tmp.txt -v | grep '^$' -v
# 显示除空行除注释的内容

grep -n "\.$" tmp.txt
# 找出以.结尾的行内容

grep '.*' tmp.txt

# 贪婪匹配
grep ".*e" tmp.txt	# 以e结尾的行内容

[abc]中括号

中括号表达式,[abc]表示匹配中括号中任意一个自负,a或b或c,,常见形式如下:

  • [a-z] 匹配所有小写;
  • [A-Z] 匹配所有大写;
  • [a-zA-Z] 匹配所有的单个大小写字母;
  • [0-9] 匹配所有单个数字;
  • [a-zA-Z0-9] 匹配所有数字和字母。
  • [^0-9] 过滤掉0-9,其余显示出来。

扩展正则表达式实践

此处使用grep -E进行扩展正则,egrep官网已经弃用。

+号

+号表示匹配前一个字符1次或多次

grep -E "i+" tmp.txt

?号

匹配前一个字符0次或1次

grep -E "go?d" tmp.txt
# 输出god gd 不输出gooood

|符

或者

find /data -name "*.txt"
grep -E "a|x" 

()小括号

将一个或多个字符捆绑在一起,当做一个整体处理

grep -E "goo|lad" tmp.txt
grep -E "g(oo|la)d" tmp.txt

括号()内的内容可以 被后面的 “\n” 正则引用,n为数字,表示 引用第几个括号的内容

grep -E "(l..e).*\1" tmp.txt

{n,m}匹配次数

grep -E "y{2,3}" test.txt -o
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值