最近学习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. python 中的nonlocal

    python 中nonloal 关键字用来在函数或其他作用域中使用外层变量(非全局),也可使用global需要在函数外部

  2. java基础之8种基本数据类型

    简单往往是最重要的,在刚刚学java的时候老师会给我们先讲这8种基本数据类型,今天再来做一个温习,[本文大部分参考了 https://zhuanlan.zhihu.com/p/25439066,在上面 ...

  3. 企业定制CRM系统的5步流程

    由于所处的行业不同,不同的企业对CRM系统的需求也不同.除了行业通用的功能之外,每个企业都有自己独特的功能需求.为了让CRM系统跟上这种需求的变化,CRM厂商通常也会提供CRM系统定制开发功能来满足不 ...

  4. lighttpd 轻量级WEB服务器

    Lighttpd 是一款开源 Web 服务器软件.Lighttpd 安全快速,符合行业标准,适配性强并且针对高配置环境进行了优化.相对于其它的 Web 服务器而言,Lighttpd 占用内存更少:因其 ...

  5. 归一化方法总结 | 又名“BN和它的后浪们“

    前言: 归一化相关技术已经经过了几年的发展,目前针对不同的应用场合有相应的方法,在本文将这些方法做了一个总结,介绍了它们的思路,方法,应用场景.主要涉及到:LRN,BN,LN, IN, GN, FRN ...

  6. Spring 版MediatR--中介者模式实现库

    背景 C# 版本库 MediatR 是一个中介者模式实现类库,其核心是一个中介 者模式的.NET实现,其目的是消息发送和消息处理的解耦.它支持单播和多播形式使用同步或异步的模式来发布消息,创建和帧听事 ...

  7. Jenkins+gitlab发布Django程序

    Jenkins+gitlab发布Django程序 一. 二. 三.shell # !/bin/bash cd /root/upload_file #git add . #git commit -m ' ...

  8. GO学习-(5) Go语言基础之基本数据类型

    Go语言中有丰富的数据类型,除了基本的整型.浮点型.布尔型.字符串外,还有数组.切片.结构体.函数.map.通道(channel)等.Go 语言的基本类型和其他语言大同小异. 基本数据类型 整型 整型 ...

  9. NVIDIA Turing Architecture架构设计(上)

    NVIDIA Turing Architecture架构设计(上) 在游戏市场持续增长和对更好的 3D 图形的永不满足的需求的推动下, NVIDIA 已经将 GPU 发展成为许多计算密集型应用的世界领 ...

  10. 如何实现一个简易版的 Spring - 如何实现 AOP(终结篇)

    前言 在 上篇 实现了 判断一个类的方式是符合配置的 pointcut 表达式.根据一个 Bean 的名称和方法名,获取 Method 对象.实现了 BeforeAdvice.AfterReturni ...