Shell常用工具find,grep,sed,awk,xargs命令
最近学习shell命令,对grep,sed,awk命令有点混乱,故小结一下,巩固一遍。
注意:find , grep , sed, awk可使用基本正则表达式字符,find,grep,awk也支持扩展的正则表达式元字符,grep使用扩展正则必须结合-E或直接使用egrep命令。
基本正则表达式元字符有:
| * | 重复前面字符0次或多次 | . | 匹配任意字符一个,包括空格 | ^ | 匹配行首,但若在[]内则表示取反 |
| [] | 匹配字符集 | \{\} | 精确匹配 | $ | 匹配行尾 |
| \{n\} | 表示重复前面字符n次 | \{n,\} | 表示重复前面字符至少n次 | \{n,m\} | 表示重复前面字符n-m次 |
扩展正则表达式元字符有:
| ? | 匹配0个或1个前面的普通字符 | + | 匹配至少一个前面的字符 |
| () | 字符集合 | | | 或,通常和()一起使用 |
上述部分元字符在通配时意义会不一样,通配时如下:
| * | 任意位任意字符 | ? | 一个任意字符 |
| ^ | 取反 | {,} | 或的关系 |
一、find命令:
基本格式:find 【路径】【选项】【操作】
【选项】: -name , -type , -mtime, -size , -perm , -user , -group 等
【操作】:-print , -exec, -ok
(1)常用选项及意义:
-name :根据文件名查找文件。 如:查找当前目录下的所有以“.py”结尾的文件(说明:“.”表示当前目录,“*”正则基本通配符)

-type :根据文件类型进行查找,文件类型有d:目录 - :普通文件 b:块设备文件 l:符号链接文件 p:管道文件 c:字符设备文件
如:查找当前路径下所有的目录

-mtime :后接+n,表示文件更改时间距今在n天之前,-n表示文件更改距今在n天之内。
如:查找当前路径下今天修改过的文件

-perm:根据文件权限查找文件。如:查找当前路径下权限为764的文件,说明:7表示rwx,表示用户(user)具有可读可写可执行权限,6表示rw-表示该用户所属属组(group)具有可读可写无可执行权限,4表示r--表示其他用户(others)仅有可读权限

-user :根据文件属主查找文件; -group:根据用户属组查找文件 -size : 根据文件大小查找文件 暂不作演示。
(2)操作名称及其意义
- print: 将匹配到的文件输出到标准输出
-exec : 对匹配的文件执行该参数给出的命令,后面接的形式为:“命令” { } \;固定格式。
-ok:和-exec功能相同,只是在每次执行时会给出提示,让用户确定是否执行。
实例如下:
a. -print:查找当前路径下今天修改过的文件,且文件权限为764的文件

b. -exec : 查找当前路径下普通文件的详细信息

c. -ok : 查找当前路径下普通文件的详细信息

二、grep命令:一种强大的文本搜索工具,与正则表达式结合使用
基本格式: grep 【选项】【模式】【文件....】
【选项】:常用的有-c,-i, -n ,-l , -w, -x, -r, -b ,-E,-F
| -c | 只输出匹配行的数量 | -n | 列出所有的匹配行,并打印行号 | -b | 打印匹配行距文件头部的偏移量,单位:字节 | -x | 匹配整行 | -E | 支持扩展正则表达式 |
| -i | 不区分大小写 | -l | 只列出符合匹配的文件名,而不列出具体匹配行 | -w | 匹配整词 | -r | 递归搜索 | -F | 不支持正则表达式,按字符字面意思匹配 |
【模式】:可以是字符串,变量,正则表达式,注意模式中包含空格时,需要用双引号引起来。
实例1:搜索当前路径下以.py,.txt,.sh结尾的文件中哪些包含hello字符串,要求不区分大小写搜索,显示文本行内容及行号。
分析:以.py,.txt,.sh结尾的文件—— “*.{py,txt,sh}”。不区分大小写,使用-i选项。 显示文本内容及行号,使用-n。如下两种方式:

实例2:统计文本中的空行数,住:'^$'匹配空行

实例3:
a. 查找所有包含字符串“the”的行,如下,包含they字符的行也打印出来。

b. 精确匹配“the”这个单词的行
方法一:使用精确匹配\< \>

方法二:使用-w选项。

c. 查找整行文本都是“the”的行:使用-x选项

三、sed命令:流编辑器
基本格式一:sed 【选项】 'sed命令' 输入文件
基本格式二:sed 【选项】-f sed脚本文件 输入文件
基本格式三: ./sed脚本文件 输入文件
多个编辑命令时:
sed 【选项】 -e 'sed 命令1' -e 'sed 命令2' -e 'sed 命令n'
【选项】:
-n : 不打印所有行到标准输出
-e : 表示将下一个字符串解析为sed编辑命令
-f : 表示调用sed 脚本
【定位文本方法】:
x:指定行号 x,y:从x到y行 /pattern/ :匹配pattern模式的行
/pattern/parttern2/ :匹配包含pattern和parttern2的行
x,y!:查询不包括x到y的行
x,/pattern/:从模式x到pattern行进行匹配 /pattern/,x :从模式pattern到x行进行匹配
【sed编辑命令】:
常用:
| p | 打印匹配行 | a\ | 匹配行后追加 |
| i\ | 匹配行前插入 | = | 打印文件行号 |
| r | 从另一个文件读入 | w | 写入到另一个文件 |
| c\ | 新文本替换匹配行,整体替换 | n | 读取下一个输入行,用下一个命令处理新的行 |
| s | 替换模式替换字符串 | y | 变换字符 |
| d | 删除定位行 | q | 第一个模式匹配成功后退出 |
| {} | 在定位行执行命令组 |
Shell常用工具find,grep,sed,awk,xargs命令的更多相关文章
- 三个支持正则表达式的行处理的工具: grep/sed/awk
grep: 全称Global Regular Expression Print, 是干什么的,不多说了: 用法:grep [-options] [pattern] [filename] 选项: -c: ...
- 【shell脚本练习】grep sed awk
下面是简单学习之后做得练习题,如果有不对的或者说解题思路不好的,请交流啊. Grep 练习 文件名grepfile Steve Blenheim:238-923-7366:95 Latham Lane ...
- Linux 文本处理工具(grep sed awk )
^test: 以test开头; test$: 以test结尾: ^$: 表示空行,不是空格: . :代表且只代表任意一个字符(其他功能:当前目录,加载文件): \ : 代表转义字符,表示特殊字符: * ...
- Linux三剑客grep/sed/awk
grep/sed/awk被称为linux的“三剑客” grep更适合单纯的查找或匹配文本: sed更适合编辑匹配到的文本: awk更适合格式化文本,对文本进行较复杂各式处理: Grep --color ...
- linux三剑客grep|sed|awk实践
最好先学习正则表达式的基本用法,以及正则表达式BREs,EREs,PREs的区别 此坑待填 grep sed awk
- 【Linux】 字符串和文本处理工具 grep & sed & awk
Linux字符串&文本处理工具 因为用linux的时候主要用到的还是字符交互界面,所以对字符串的处理变得十分重要.这篇介绍三个常用的字符串处理工具,包括grep,sed和awk ■ grep ...
- 5_find grep sed awk 详解
find :查找文件系统中指定的文件.可以按文件名(-name) 权限(-perm) 归属人 查找. find 要查找文件的路径 表达式 *通配符 可以添加在文件名的任意位置 常用的例子( ...
- 彻底理解 Linux 的搜索工具: grep 和 awk
grep 官方手册 awk 官方手册, awk 学习资料 1. grep grep 用于打印匹配指定模式的行. 1.1 介绍 grep 命令从输入文件中查找匹配到给定模式列表的行.发现匹配到的行后,默 ...
- linux 三剑客命令(grep,sed ,awk)
grep 命令 :强大的文本’搜索’工具 1.grep -n 'word' file_name 在file_name文件中找到word所在的所有行并显示.-n 为显示行号. 2 ...
随机推荐
- linux 解压总结
tar解压 gz解压 bz2等各种解压文件使用方法 .tar 解包:tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar是打包,不是压 ...
- clickhouse_各个引擎表的特点
去重表:RepalcingMergeTree 1.使用order by排序键作为判断重复数据的唯一键 2.只有在合并分区的时候才会触发删除重复数据的逻辑 3.以数据分区为单位删除重复数据.当分区合并时 ...
- SpringBoot实现整合mybatis-generator-maven-plugin 1.4.0
创建 Maven 工程 网上有很多教程且 Idea 可以直接创建 这里就不进行 pom.xml 引入依赖和插件 pom中generalto-maven-plugs中必须指定mysql驱动,并且明确版本 ...
- MySQL 三万字精华总结
写在之前:不建议那种上来就是各种面试题罗列,然后背书式的去记忆,对技术的提升帮助很小,对正经面试也没什么帮助,有点东西的面试官深挖下就懵逼了. 个人建议把面试题看作是费曼学习法中的回顾.简化的环节 ...
- CAP 5.1 版本发布通告 - 你期待的 Redis 来了
前言 今天,我们很高兴宣布 CAP 发布 5.1 版本正式版,在这个版本里我们同样引入了更多令人激动的新特性和改进,同时也得到越来越多人的喜爱. 得益于社区的反馈和贡献者的支持,在过去的两个月里,我们 ...
- TVM 高效保护隐私 ML
TVM 高效保护隐私 ML 这篇文章描述了Myelin,一个在值得信赖的硬件飞地中保护隐私的机器学习框架,以及TVM如何使Myelin快速.关键的想法是,TVM,不像其它流行的ML框架,将模型编译成轻 ...
- 3DPytorch-API NVIDIA Kaolin
3DPytorch-API NVIDIA Kaolin NVIDIA Kaolin library provides a PyTorch API for working with a variety ...
- 现代传感器的接口:中断驱动的ADC驱动程序
现代传感器的接口:中断驱动的ADC驱动程序 Interfacing with modern sensors: Interrupt driven ADC drivers 研究了如何编写一个阻塞的模数转换 ...
- 教你三种jQuery框架实现元素显示及隐藏动画方式
摘要:在jQuery框架中对元素对象进行显示和隐藏有三种方式,分别是"默认方式显示和隐藏"."滑动方式显示和隐藏"."淡入淡出显示和隐藏". ...
- 【Azure 机器人】微软Azure Bot 编辑器系列(6) : 添加LUIS,理解自然语言 (The Bot Framework Composer tutorials)
欢迎来到微软机器人编辑器使用教程,从这里开始,创建一个简单的机器人. 在该系列文章中,每一篇都将通过添加更多的功能来构建机器人.当完成教程中的全部内容后,你将成功的创建一个天气机器人(Weather ...