文本处理工具:
Linux上文本处理三剑客:
文本过滤工具(模式:pattern)工具;
1.grep:支持基本正则表达式;
2.egrep:支持扩展正则表达式
3.fgrep: 不支持正则表达式
注: 同时这三个命令通过附加选项可以相互之间进行切换如下
grep -E = egrep
geep -F = fgrep
egrep -G = grep
egrp -F = fgrep
fgrep -e = egrep
fgrep -g = grep
正则表达式:Regual Expression,REGEXP
由一类特殊字符及文本字符所编写的模式,其中有些字符不表示其字面意义,而是用与表示控制或通配的功能;
同时正则也分两类:
基本正则表达式:BRE
扩展正则表达式:ERE
元字符(grep):
grep: Global search REgular expression and print out the line.
作用:文本搜索工具,根据用户指定的“模式(过滤条件)”对目标文本逐行进行匹配检查;打印匹配到 行;
模式 : 由正则表达式的元字符及文本字符所编写出的过滤条件;
正则表达式引擎:
grep [options] PATTERN [FILE...]
grep [options] [-e PATTERN | -f FILE] [FILE...]
默认形式: [root@localhost ~]# grep "UUID" /etc/fstab
UUID=c16f482c-99e1-4601-a295-895df929ef8e /boot xfs defaults 0 0
下面是grep的常用选项的简要介绍
OPTIONS:
--color=auto:对匹配到的文章着色后高亮显示;
-l : ignorecase,忽略字符的大小写;
-o : 仅显示匹配到的字符串本身;
-v,--invert-match : 显示不能被模式匹配到的行;
-E : 支持使用扩展的正则表达式元字符
-q,--qulet,--silent : 静默模式,即不输出任何信息;
-A# : after,后#行
-B# : before,前#行
-C#:context
基本正则表达式元字符:
字符匹配:
. : 匹配任意单个字符;
[ ] : 匹配指定范围内的任意单个字符;
[^]:匹配指定范围外的任意单个字符;
[:digit:]、[:loewr:]、[:upper:]、[:alpha:]、[:alnum:]
针对位置锚定可以参考下面实例:
找出/etc/grub2.cfg文件中,以至少一个空白字符开头,且后面非空白字符的行
[root@localhost ~]# grep "^[[:space:]]\+[^[:space:]]" /etc/grub2.cfg
load_env
set default="${next_entry}"
set next_entry=
save_env next_entry
......
匹配次数:用在要指定其出现的次数的字符的后面,用于限制其前面字符出现的次数;
*:匹配其前面的字符任意次;可以是0,也可以1或者n次;
例如:grep"x*y"
abxy
aby
xxxxxy
yab
. * : 匹配任意长度的任意字符
\? : 匹配其前面的字符0次或1次;即其前面的字符是可有可无的;
\+ : 匹配前面的字符1次或多次;即前面的字符要出现至少一次
\{m\} : 匹配其前面的字符m次;
\{m,n} : 匹配其前面的字符至少m次,至多n次;
\{0,n\}: 至多n次
\{m,\} : 至少m次
位置锚定:
^:行首锚定:用于模式的最左侧;
$:行尾锚定:用于模式的最右侧;
^PATTERN$:用于PATTERN来匹配整行;
^$ : 空白行;
^[[:space]]*$ : 空行或包含空白字符的行;
单词:非特殊字符组成的连续字符(字符串)都称为单词;
\<或\b : 词首锚定,用于单词模式的左侧;
\>或\b : 词尾锚定,用于单词模式的右侧
针对位置锚定可以参考下面实例:
例:找出/etc/passwd文件中不以/bin/bash结尾的行
[root@localhost ~]# grep -v "/bin/bash$" /etc/passwd |tail
chrony:x:993:990::/var/lib/chrony:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
sssd:x:992:989:User for sssd:/:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
分组及引用
\(\) : 将一个或多个字符捆绑在一起,当作一个整体进处理;
例:\(xy\)*ab
注意:分组括号中的模式匹配到的内容会被正则表达式引擎自动记录于内部的变量中,这些变量为:
\1:模式从左侧起,第一个左括号以及与之匹配的有括号之间的模式所匹配到的字符;
\2:模式从左侧起,第二个左括号以及与之匹配的右括号之间的模式所匹配到的字符;
\3
.......
如下面例子:
[root@localhost ~]# cat love.txt
He loves his lover
He likes his lover
she likes her liker
she loves her liker
该例的含义是,行段中左侧出现的以L开头e结尾的单词,后面也要匹配与前面一样的,所以可以把前面(l..e)后面加\1并以\1结尾,将(l..e)的值赋值给到\1。
- 三大文本处理工具grep、sed及awk的简单介绍
grep.sed和awk都是文本处理工具,虽然都是文本处理工具单却都有各自的优缺点,一种文本处理命令是不能被另一个完全替换的,否则也不会出现三个文本处理命令了.只不过,相比较而言,sed和awk功能更 ...
- 【Linux】 字符串和文本处理工具 grep & sed & awk
Linux字符串&文本处理工具 因为用linux的时候主要用到的还是字符交互界面,所以对字符串的处理变得十分重要.这篇介绍三个常用的字符串处理工具,包括grep,sed和awk ■ grep ...
- Linux 文本处理工具grep,sed,awk
grep.sed和awk都是文本处理工具,虽然都是文本处理工具单却都有各自的优缺点,一种文本处理命令是不能被另一个完全替换的,否则也不会出现三个文本处理命令了.只不过,相比较而言,sed和awk功能更 ...
- shell之三大文本处理工具grep、sed及awk
grep.sed和awk都是文本处理工具,虽然都是文本处理工具单却都有各自的优缺点,一种文本处理命令是不能被另一个完全替换的,否则也不会出现三个文本处理命令了.只不过,相比较而言,sed和awk功能更 ...
- 三大文本处理工具grep、sed及awk
一. 用grep在文件中搜索文本 grep能够接受正则表达式,生成各种格式的输出.除此之外,它还有大量有趣的选项. 1. 搜索包含特定模式的文本行: 2. 从stdin中读取: 3. 单个g ...
- Linux--shell脚本之文本处理工具
文本处理工具--grep.sed.awk Bash Shell提供了功能强大的文件处理工具:sed(流编辑器stream editor)和awk,都可使用正则表达式进行模式匹配. 而grep又有助于理 ...
- Linux的文本处理工具浅谈-awk sed grep
Linux的文本处理工具浅谈 awk 老大 [功能说明] 用于文本处理的语言(取行,过滤),支持正则 NR代表行数,$n取某一列,$NF最后一列 NR==20,NR==30 从20行到30行 FS ...
- [linux] grep 文本搜索工具
grep [option] pattern file Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.grep全称是Global Regular ...
- grep文本处理工具
grep是一款文本过滤工具,基于正则表达式进行模式匹配sed:stream editor 流编辑器awk:linux上实现为gawk,文本报告生成器(格式化文本)文本搜索工具,根据用户指定的模式,对目 ...
随机推荐
- JAVA课设---五子棋
1.团队博客链接 JAVA课设-五子棋-团队博客 2.个人负责模块: ①对鼠标事件的处理 , 此模块需处理五子棋的放置问题.颜色转换问题.以及当五子连线时弹出窗口显示结果. ②对MainFrame中主 ...
- 201521123064 《Java程序设计》第13周学习总结
本次作业参考文件 正则表达式参考资料 1. 本章学习总结 1.1 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. ① InetAddress(IP地址对应的类) InetAd ...
- java第十三次作业
1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相内关容. 2. 书面作业 1. 网络基础 1.1 比较ping www.baidu.com与ping cec.jmu ...
- 201521123068 《java程序设计》 第14周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. 2. 书面作业 1.MySQL数据库基本操作 建立数据库,将自己的姓名.学号作为一条记录插入.(截图,需出现自己 ...
- C# 泛型集合
原文出处我的wiki,转载请说明出处 考虑到泛型在集合类型中的广泛应用,这里一起讨论. 1. 泛型 1.1 泛型的定义与约束 创建泛型方法.委托.接口或类时,需要在名称后增加尖括号及其中的泛型参数,泛 ...
- 运用GRASP原则来做uml交互类图-------pos机实例
重要的几个GRASP原则:1.控制器模式 2.创建者模式 (原则)3.信息专家模式(原则) 4. 高内聚 低耦合 这里所说的模式并不是java中针对具体的事件的设计模式 主成功场景的几个操作: ...
- Oracle中Union与Union All的区别(适用多个数据库)
Oracle中Union与Union All的区别(适用多个数据库) 如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字.union(或 ...
- Hibernate @Embeddable注释
在hibernate中实现自定义类型,只要实现UserType接口即可或者以Component的形式提供.JPA的@Embedded注释可以在你的Entity中使用一般的Java对象,此对象需要用@E ...
- 跨Storyboard调用
在开发中我们会有这种需求从一个故事板跳到另一个故事板 modal UIStoryboard *secondStoryboard = [UIStoryboard storyboardWithName:@ ...
- 云计算-openstack基础构架以及服务方式详解
一:什么是openstack 是Rackspace(美国航天局)和NASA(一家公司)共同发起的开源项目,他是一系列软件项目的组合. 这些项目是松耦合的关系,可以进行独立的安装,启动和停止,只有在必要 ...