shell之文本过滤(grep)

 

shell之文本过滤(grep)

分类: linux shell脚本学习
shell正则表达式扩展工具存储

grep(全局正则表达式版本)允许对文本文件进行模式查找。如果找到匹配模式, grep打印包含模式的所有行。grep支持基本正则表达式,也支持其扩展集。

g r e p一般格式为:

grep [选项]基本正则表达式[文件]

这里基本正则表达式可为字符串。如果是字符串的时候请加上“”号,否则容易出错。

 

常用的g r e p选项有:
-c  只输出匹配行的计数。
-i  不区分大小写(只适用于单字符) 。
-h  查询多文件时不显示文件名。
-l  查询多文件时只输出包含匹配字符的文件名。
-n  显示匹配行及行号。
-s  不显示不存在或无匹配文本的错误信息。
-v  显示不包含匹配文本的所有行。

 

grep和正则表达式
使用正则表达式使模式匹配加入一些规则,因此可以在抽取信息中加入更多选择。使用正则表达式时最好用单引号括起来,这样可以防止 g r e p中使用的专有模式与一些 s he l l 命令的特殊方式相混淆。

 

要用好grep这个工具,其实就是要写好正则表达式,所以这里不对grep的所有功能进行实例讲解,只列几个例子,讲解一个正则表达式的写法。

$ ls -l | grep '^a' 
通过管道过滤ls -l输出的内容,只显示以a开头的行。

$ grep 'test' d* 
显示所有以d开头的文件中包含test的行。

$ grep 'test' aa bb cc 
显示在aa,bb,cc文件中匹配test的行。

$ grep '[a-z]/{5/}' aa 
显示所有包含每个字符串至少有5个连续小写字符的字符串的行。

$ grep 'w/(es/)t.*/1' aa 
如果west被匹配,则es就被存储到内存中,并标记为1,然后搜索任意个字符(.*),这些字符后面紧跟着另外一个es(/1),找到就显示该行。如果用egrep或grep -E,就不用"/"号进行转义,直接写成'w(es)t.*/1'就可以了。

grep正则表达式元字符集(基本集)

锚定行的开始 如:'^grep'匹配所有以grep开头的行。


锚定行的结束 如:'grep$'匹配所有以grep结尾的行。


匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。


匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。 .*一起用代表任意字符。

[] 
匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。

[^] 
匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。

/(../) 
标记匹配字符,如'/(love/)',love被标记为1。

/< 
锚定单词的开始,如:'/
/> 
锚定单词的结束,如'grep/>'匹配包含以grep结尾的单词的行。

x/{m/} 
重复字符x,m次,如:'0/{5/}'匹配包含5个o的行。

x/{m,/} 
重复字符x,至少m次,如:'o/{5,/}'匹配至少有5个o的行。

x/{m,n/} 
重复字符x,至少m次,不多于n次,如:'o/{5,10/}'匹配5--10个o的行。

/w 
匹配文字和数字字符,也就是[A-Za-z0-9],如:'G/w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。

/W 
/w的反置形式,匹配一个或多个非单词字符,如点号句号等。

/b 
单词锁定符,如: '/bgrepb/'只匹配grep。

 

转载于:https://www.cnblogs.com/L-H-R-X-hehe/p/3816191.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/420812.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1016 部分A+B (15分)

输入样例 1&#xff1a; 3862767 6 13530293 3 输出样例 1&#xff1a; 399 输入样例 2&#xff1a; 3862767 1 13530293 8 输出样例 2&#xff1a; 0 # -*- coding: utf-8 -*-if __name__ __main__:input_list input().split()a, d_a, b, d_b input_list[0], input_li…

张小二:做一个幸福的胖子

最近听完了单田芳的大唐惊雷。秦琼病重&#xff0c;单田芳在评书中分析&#xff1a; 1.多次负伤 2.心机重&#xff0c;看不开&#xff0c;平时的状态都是一副严肃的表情&#xff1b; 在看程咬金&#xff1a; 每天笑哈哈&#xff0c;有着肥胖的身躯&#xff0c;看似憨厚&#xf…

IDEA2020安装

下载1 https://souyunku.lanzous.com/b0aki3kna 下载2 https://pan.baidu.com/s/1YF6o2M4PA3_97kEP4qCqGQ 提取码&#xff1a;kg7f把jar包往idea里面一丢&#xff0c;就可正常使用。

马哥学习笔记二十七——IO复用

I/O动作模式  阻塞 非阻塞 I/O复用 信号驱动 异步 转载于:https://www.cnblogs.com/wangyongbin/p/3817353.html

1017 A除以B (20分)

输入样例&#xff1a; 123456789050987654321 7 输出样例&#xff1a; 17636684150141093474 3 # -*- coding: utf-8 -*- import redef big_division(a, b):q_list, r [], 0len_a len(a)for i in range(0, len_a):dividend 10 * r eval(a[i])q_list.append(dividend // …

Idea创建web项目,配置tomcat服务器

使用idea创建web项目 新下载的idea&#xff0c;需要启用插件&#xff0c;才可创建web项目 启用Java ee&#xff0c;servlet有web项目选项 创建项目 选好jdk&#xff0c;要配置好jdk环境变量https://blog.csdn.net/crossing2012/article/details/81292547 选路径 to…

CSS 最核心的几个概念

本文将讲述 CSS 中最核心的几个概念&#xff0c;包含&#xff1a;盒模型、position、float等。这些是 CSS 的基础&#xff0c;也是最经常使用的几个属性&#xff0c;它们之间看似独立却又相辅相成。为了掌握它们&#xff0c;有必要写出来探讨一下&#xff0c;如有错误欢迎指正。…

1018 锤子剪刀布 (20分)

输入样例&#xff1a; 10 C J J B C B B B B C C C C B J B B C J J 输出样例&#xff1a; 5 3 2 2 3 5 B B 本题有几个地方需要注意&#xff1a; 当甲乙没有赢&#xff0c;怎么输出&#xff0c;正确答案是都输出B&#xff0c;这个在题目中找不出线索&#xff0c;有点坑&am…

jQuery api学习笔记

jQuery事件 各种事件类似点击事件 <html><head> <title>index.jsp</title><script type"text/javascript" src"js/jquery-3.2.1.js"></script><script>function click() {alert("you click me!");}…

pow(x,n) leecode

https://oj.leetcode.com/problems/powx-n/ 提交地址 快速幂的使用&#xff0c;可以研究一下 1 public class Solution {2 public double pow(double x, int n) {3 4 if(n0) return 1.0;5 if(x1) return 1.0;6 if(x0)return 0;7 i…

1020 月饼 (25分)

输入样例&#xff1a; 3 20 18 15 10 75 72 45 输出样例&#xff1a; 94.50 解题心得&#xff1a; 本题因为要排序&#xff0c;优先考虑使用二维数组和sorted最常用的模式&#xff1b;python在建立二维数组时有一个坑&#xff0c;就是[[]] * n中出现浅拷贝问题&#xff0c;…

在Java web中使用json

json包下载 下载jar包当然是下大厂滴 推荐Alibaba的fastjson推荐Google的gjson 本文讲fastjson https://github.com/alibaba/fastjson.git json的常见格式 key - value 键值对 {"key":"value"}多个key - value对 {"key1":"value"…

方法重载

Overload&#xff1a; 1、一个类中方法名字一样&#xff0c;参数不一样的&#xff08;参数类型、参数个数&#xff09;&#xff0c;可构成重载&#xff1b; 2、构造方法中也可以使用方法重载&#xff1b; 转载于:https://www.cnblogs.com/link1220/p/3825252.html

1019 数字黑洞 (20分)

输入样例 1&#xff1a; 6767 输出样例 1&#xff1a; 7766 - 6677 1089 9810 - 0189 9621 9621 - 1269 8352 8532 - 2358 6174 输入样例 2&#xff1a; 2222 解体心得&#xff1a; 在初次写str2list时没有考虑到输入是‘123’这样的情形&#xff1b; # -*- coding: …

再看数据库——(2)视图

概念 *是从用户使用数据库的观点来说的。 *从一个或多个表&#xff08;视图&#xff09;中导出来的 *一个虚表&#xff0c;或者说查询表 为什么要用视图呢&#xff1f; 一是简单&#xff0c;看到的就是需要的。视图不仅可以简化用户对数据的理解&#xff0c;也可以简化他们的操…

spring bean的创建,生命周期

1. 初探spring 什么是spring Spirng 是分层的Java se/ee应用full-stack&#xff08;web层mvc dao层jdbc模板 业务事务管理&#xff09;轻量级开源框架&#xff0c;以IoC(inverse of control :反转和控制) 和 AOP&#xff08;Aspect Oriented Programming: 面向切面编程&#xf…

1025 反转链表 (25分)

输入样例&#xff1a; 00100 6 4 00000 4 99999 00100 1 12309 68237 6 -1 33218 3 00000 99999 5 68237 12309 2 33218 输出样例&#xff1a; 00000 4 33218 33218 3 12309 12309 2 00100 00100 1 99999 99999 5 68237 68237 6 -1 解题心得&#xff1a; 本题两个注意点&am…