grep/sed/awk被称为linux的“三剑客”

grep更适合单纯的查找或匹配文本;

sed更适合编辑匹配到的文本;

awk更适合格式化文本,对文本进行较复杂各式处理;

  • Grep

--color=auto 或者 --color:表示对匹配到的文本着色显示

-i:在搜索的时候忽略大小写

-n:显示结果所在行号

-c:统计匹配到的行数,注意,是匹配到的总行数,不是匹配到的次数

-o:只显示符合条件的字符串,但是不整行显示,每个符合条件的字符串单独显示一行

-v:输出不带关键字的行(反向查询,反向匹配)

-w:匹配整个单词,如果是字符串中包含这个单词,则不作匹配

-Ax:在输出的时候包含结果所在行之后的指定行数,这里指之后的x行,A:after

-Bx:在输出的时候包含结果所在行之前的指定行数,这里指之前的x行,B:before

-Cx:在输出的时候包含结果所在行之前和之后的指定行数,这里指之前和之后的x行,C:context

-e:实现多个选项的匹配,逻辑or关系

-q:静默模式,不输出任何信息,当我们只关心有没有匹配到,却不关心匹配到什么内容时,我们可以使用此命令,然后,使用"echo $?"查看是否匹配到,0表示匹配到,1表示没有匹配到。

-P:表示使用兼容perl的正则引擎。

-E:使用扩展正则表达式,而不是基本正则表达式,在使用"-E"选项时,相当于使用egrep。

-m 1 匹配到首行记录后停止

http://www.zsythink.net/archives/1733/

  • Sed

sed 是Stream Editor(字符流编辑器)的缩写,简称流编辑器。

Sed小技巧:

1,

search_result=`grep -E --color -n '####VVVV' $podfile`
echo "$search_result"

### "$search_result" 加双引号保存grep结果中的换行符效果

2,

array=(`echo "$search_result" |  awk -F "[:]" '{print$1}' | sort -r`)

### 加括号,将换行结果作为数组输出

http://cn.voidcc.com/question/p-oqtqbgdm-bgy.html

https://blog.csdn.net/longshenlmj/article/details/14166193

https://blog.csdn.net/lingeio/article/details/96480071

坑1:

eg :sed -i ""  's/$oldday/$today/g'  ${json_path}

shell中如果有$这样的特殊字符,单引号要换成双引号。

坑2:

mac环境使用sed修改文件报错:invalid command code E

eg: sed -i  "s/$oldday/$today/g"  ${json_path}

原来sed -i需要带一个字符串作为备份源文件的文件名称,如果这个字符串长度为0,则不备份。

https://blog.csdn.net/fdipzone/article/details/51253955

坑3:

MAC执行sed命令报“command c expects \ followed by text”错误解决办法

https://blog.csdn.net/lord_y/article/details/99949999

  • awk

  awk  [options] '{pattern + action}' {filenames}

Vivien 补充

麻烦1:他们都是面向“行”的。跨行需要采用其他手段。

Linux三剑客grep/sed/awk的更多相关文章

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

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

  2. Linux三剑客grep、awk和sed

    grep,sed 和 awk是Linux/Unix 系统中常用的三个文本处理的命令行工具,称为文本处理三剑客.本文将简要介绍这三个命令并给出基本用法. 管道 在介绍这两个命令之前,有必要介绍一下Uni ...

  3. Linux三剑客grep、awk、sed

    何为Linux三剑客? 第一个剑客是 grep,grep 会根据正则表达式查找相关内容并打印对应的数据. 第二个剑客是 awk,awk 的名字来源于三个作者的名字简称,它可以根据定位到的数据行处理其中 ...

  4. Linux命令-grep,sed,awk

    grep (global search regular expression[RE] and print out the line) 正则表达式全局搜索并将行打印出来 在文件中查找包含字符串" ...

  5. Linux学习grep,sed,awk工具的使用

    1.grep:根据模式搜索文本并将符合模式的文本显示出来(pattern模式:由文本字符和正则表达式元字符所匹配出来的条件) 注:alias grep='grep --color' -c:打印符合要求 ...

  6. [svc]linux正则实战(grep/sed/awk)

    企业实战: 过滤ip 过滤出第二行的 192.168.2.11. eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 ine ...

  7. Linux实战教学笔记12:linux三剑客之sed命令精讲

    第十二节 linux三剑客之sed命令精讲 标签(空格分隔): Linux实战教学笔记-陈思齐 ---更多资料点我查看 1,前言 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件 ...

  8. (转)不看绝对后悔的Linux三剑客之sed实战精讲

    不看绝对后悔的Linux三剑客之sed实战精讲 原文:http://blog.51cto.com/hujiangtao/1923718 二.Linux三剑客之sed命令精讲 1,前言 我们都知道,在L ...

  9. Linux 三剑客之sed

    目录 Linux 三剑客之sed 命令补充: sort命令 uniq命令 cut命令 tr命令 wc命令 三剑客 - sed 编辑模式: 定位分类: 实例如下: d模式--删除模式 p模式--打印 a ...

随机推荐

  1. 【C++】C++中的lambda表达式和函数对象

    目录结构: contents structure [-] lambda表达式 lambda c++14新特性 lambda捕捉表达式 泛型lambda表达式 函数对象 函数适配器 绑定器(binder ...

  2. 批量实现ssh免密登录

    本节索引 场景分析 ssh免密登录 pssh工具批量管理 SHELL自动化脚本 本篇总结 场景分析 作为一个运维工程师,不是每个人工作的环境都想阿里.腾讯那样,动不动就上亿的PV量,上万台服务器.我们 ...

  3. JAVA中String空对象的字符串拼接

    今天使用JSONObject中get一个不存在的对线,最后拼接成sql语句插入数据库时,最后数据库中的值为字符串'null',而不是空对象. 追踪许久才发现自己的java白学了. java strin ...

  4. continue & tag in GO

    Go语言中 continue 语句可以结束当前循环,开始下一次的循环迭代过程,仅限在 for 循环内使用,在 continue 语句后添加标签时,表示开始标签对应的循环,例如: package mai ...

  5. 对step文件进行信息抽取算法

    任务描述:给定一个step文件,对该文件的字符串进行信息抽取,结构化的组织文件描述模型的数据.形成抽象化数据结构,存入计算机数据库.并能按照有条理结构把这些数据展示出来. 信息抽取的结果描述: 1 数 ...

  6. EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器解决方案之Windows服务安装

    背景说明 EasyDSS流媒体解决方案是由安徽旭帆信息科技有限公司自主研发的一套集流媒体点播.转码.管理.直播.录像.检索.时移回看于一体的一套完整的商用流媒体解决方案.EasyDSS软件以压缩包的形 ...

  7. Xcode中opengl的配置

    1. GLUT + GLTools + SDL2 Frameworks Search Paths :Framework + Library ( $(PROJECT_DIR)/build ) Searc ...

  8. docker: 构建自己的镜像

    我们给予ubuntu的镜像然后拷贝python的requirement.txt文件进去,再根据这个文件安装对应的python库 拷贝文件到docker容器.首先查找对应的容器ID.然后执行命令 doc ...

  9. ANR无法生成traces.txt文件

    在有些设备上ANR无法生成traces.txt文件,kill -3又不能准确把握时机或者没权限,可能是软件访问这个路径失败,可以在/data/anr/下面建立一个空的traces.txt,注意保证an ...

  10. 小甲鱼汇编语言学习笔记——day02

    1.8086CPU不支持将数据直接送入段寄存器,需要按照下面方式:数据——>通用寄存器——>段寄存器. 2.mov指令的几种形式: mov 寄存器,数据 mov 寄存器,寄存器 mov 寄 ...