最近学习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命令的更多相关文章

  1. 三个支持正则表达式的行处理的工具: grep/sed/awk

    grep: 全称Global Regular Expression Print, 是干什么的,不多说了: 用法:grep [-options] [pattern] [filename] 选项: -c: ...

  2. 【shell脚本练习】grep sed awk

    下面是简单学习之后做得练习题,如果有不对的或者说解题思路不好的,请交流啊. Grep 练习 文件名grepfile Steve Blenheim:238-923-7366:95 Latham Lane ...

  3. Linux 文本处理工具(grep sed awk )

    ^test: 以test开头; test$: 以test结尾: ^$: 表示空行,不是空格: . :代表且只代表任意一个字符(其他功能:当前目录,加载文件): \ : 代表转义字符,表示特殊字符: * ...

  4. Linux三剑客grep/sed/awk

    grep/sed/awk被称为linux的“三剑客” grep更适合单纯的查找或匹配文本: sed更适合编辑匹配到的文本: awk更适合格式化文本,对文本进行较复杂各式处理: Grep --color ...

  5. linux三剑客grep|sed|awk实践

    最好先学习正则表达式的基本用法,以及正则表达式BREs,EREs,PREs的区别 此坑待填 grep sed awk

  6. 【Linux】 字符串和文本处理工具 grep & sed & awk

    Linux字符串&文本处理工具 因为用linux的时候主要用到的还是字符交互界面,所以对字符串的处理变得十分重要.这篇介绍三个常用的字符串处理工具,包括grep,sed和awk ■ grep ...

  7. 5_find grep sed awk 详解

    find :查找文件系统中指定的文件.可以按文件名(-name)  权限(-perm) 归属人 查找. find   要查找文件的路径   表达式 *通配符  可以添加在文件名的任意位置 常用的例子( ...

  8. 彻底理解 Linux 的搜索工具: grep 和 awk

    grep 官方手册 awk 官方手册, awk 学习资料 1. grep grep 用于打印匹配指定模式的行. 1.1 介绍 grep 命令从输入文件中查找匹配到给定模式列表的行.发现匹配到的行后,默 ...

  9. linux 三剑客命令(grep,sed ,awk)

    grep 命令 :强大的文本’搜索’工具    1.grep   -n   'word'  file_name 在file_name文件中找到word所在的所有行并显示.-n 为显示行号.     2 ...

随机推荐

  1. osi七层模型与tcp/ip四层模型的差别

    OSI 七层协议 应用层 表示层 会话层 运输层 网络层 数据链路层 物理层 TCP/IP 四层协议 应用层 运输层 网际层 网络接口层 五层协议: 应用层 为用户的应用进程提供服务 HTTP SMT ...

  2. 浅谈:@RequestBody,@ResponseBody 和 @RequestParam

    1. @RequestBody @RequestBody:主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据) GET方式无请求体,所以使用@RequestBody接收数据时,前端不 ...

  3. Java 的序列化 (Serializable)(Day_09)

    我们的火,要把世界都点燃 运行环境 JDK8 + IntelliJ IDEA 2018.3 什么是序列化,反序列化 序列化是将对象状态转换为可保持或传输的格式的过程. 与序列化相对的是反序列化,它将流 ...

  4. 若依框架前端使用antd,IE11浏览器无法正常显示问题

    话不多说,直接上才艺,找到vue.config.js,把第11行的 mock 删除掉就 IE11就正常显示了, 然而项目还是不支持IE10 以及以下版本,哪位小伙伴有解决方法,可以留言交流下

  5. nginx 的基础知识(三)

    Nginx命令 nginx -s reopen 重启nginx nginx -s reload  重新加载nginx文件 nginx -s stop  停止nginx服务 nginx -s quit ...

  6. opentack - 本地化

    目录 1 Openstack minimal component 1 组件与功能 2 集群数据存储 2 neutron控制端和计算节点 2.1 SDN网络实现方式 2.2 安全组实现 2.3 虚拟机内 ...

  7. python发送丁丁消息

    import requests import time import hashlib import hmac import base64 import re def SendMessage(messa ...

  8. Lua 业务 脚本

    Lua 脚本 #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice ...

  9. Go语言协程并发---timer秒表与定时器

    秒表 package main import ( "fmt" "time" ) /*每秒大喊我要去浪,共9次,然后退出计时*/ func main() { va ...

  10. checkbox,select,radio 选取值,设定值,回显值

    获取一组radio被选中项的值var item = $('input[@name=items][@checked]').val();获取select被选中项的文本var item = $(" ...