文本处理四剑客
文本处理四剑客
命令grep
:作用是对文本的行基于**模式(正则表达式)**进行过滤
命令sed
:stream editor,文本编辑工具
命令awk
:Linux上的实现gawk,文本报告生成器
文本处理四剑客之 grep
grep:Global search REgular expression and Print out the line
作用:文本搜索工具,根据用户指定的”模式”对目标文本逐行进行匹配检查;打印匹配到的行
模式:由正则表达式字符及文本字符所编写的过滤条件(模式就是正则表达式)
官方帮助文档:https://man7.org/linux/man-pages/man1/grep.1.html
1 | grep [选项] 模式 <文件> |
文本处理四剑客之 sed
sed的工作原理
sed 即 Stream EDitor,和 vi 不同,sed是行编辑器
sed是从文件或管道中读取一行,处理一行,输出一行;再读取一行,再处理一行,再输出一行,直到最后一行。
每当处理一行时,把当前处理的行存储在临时缓冲区 模式空间(Pattern Space)中,接着用sed命令处理缓冲区中的内容,处理完后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到处理完文件内容。
一次处理一行的设计模式使得sed性能很高,sed在读取大文件时不会出现卡顿的现象。
如果使用vi命令打开大文件,则会出现明显的卡顿现象,这是因为vi命令打开文件是一次性将文件加载到内存中,再一并打开。
sed就避免了这种情况,一行一行的处理。所以体感就会打开非常快,执行速度也很快。
相关文档:
- http://sed.sourceforge.net/
- https://man7.org/linux/man-pages/man1/sed.1.html
- http://www.gnu.org/software/sed/manual/sed.html
sed主要用来自动编辑一个或多个文件,具体作用如下:
- 可对文件添加数据的能力(增)
- 可对文件删除数据的能力(删)
- 可对文件修改数据的能力(改)
- 可对文件查询数据的能力(查)
sed的命令选项
1 | sed [选项] {模式} <文件> |
sed 处理指令
1 | #处理指令 |
模式的格式:s/regexp/replacement/修饰符,支持使用其它分隔符。例:s###,s@@@
1 | #修饰符 |
sed 处理地址
1 | #处理地址 |
sed 高级用法
sed 中除了模式空间,另外还支持保持空间(Hold Space),利用此空间,可以将模式空间中的数据,临时保存至保持空间,从而后续接着处理,实现更为强大的功能。
常见的高级命令
1 | P 打印模式空间开端至第一个换行符\n的内容,并追加到默认输出之前 |
文本处理四剑客之 awk
未完待续…
文本处理四剑客之 find
与find相似的还有一个locate
。<插入链接>
fin的特点
- 查找速度略慢
- 精确查找
- 实时查找
- 查找条件丰富
- 只能搜索用户具备读取和执行权限的目录
1 | find [选项] [查找路径] [查找条件] [处理动作] |
指定搜索目录的层级
1 | -maxdepth N #最大搜索的目录深度,指定目录下的文件为第1级 |
先处理文件再处理目录
1 | -depth #先处理文件 |
根据文件名和inode号查找
1 | -name name #支持使用通配符。如: *, ?, [], [^],通配符要加双引号引起来 |
根据属主或属组查找
1 | -user USERNAME #查找属主为指定用户(UID)的文件 |
根据文件类型查找
1 | -type TYPE #指定文件类型查找 |
空文件或目录
1 | -empty #空文件或空目录 |
组合条件
1 | -a #与,多条件默认就是与关系。可省略 |
排除目录
1 | -prune #跳过,排除指定目录,必须配合 -path使用 |
根据文件大小来查找
1 | -size [+|-]N UNIT # N为数字,UNIT为常用单位。k,M,G,c(byte)等 |
根据时间戳
1 | # 以天为单位 |
根据权限查找
1 | -perm [/|-]MODE |
正则表达式
1 | -regextype type #正则表达式类型。如果想使用扩展正则一定要使用 |
处理动作
1 | -print #默认的处理动作,显示至屏幕 |