这几个工具是shell中非常好用的文本流处理工具,可以进行查找,编辑或者分析等工作,它们都支持正则表达式,也支持使用shell内置的变量

grep

grep是一个字符串比较工具,用于从文件中提取满足条件的行,条件的部分可以使用正则表达式

$grep [-ABrn] [str] FilePathOrDirPath VS $find [路径] [选项] [参数]

-A [n] #除了该行之外,也列出后续的n行

-B [n] #除了该行之外,也列出之前的n行

-n #显示行号

-r #递归查找所有的目录

示例文档

$ cat -n test_grep
1 #include<stdio.h>
2 int main(){
3 printf("hello,world!");
4 }
5
6
7 角标
8 见后文[^1]
9
10 [^1]:This the first footnote
11

栗子, 找到符合模式[a-g](的行:

$ grep '[a-g](' test_grep
printf("hello,world!");

sed

sed是一个文本流编辑工具,对文件流以行为单位进行替换,删除,新增,提取等操作

$sed [-nefri] [n1[, n2]] [function] [字符串]

-n 只列出经过sed特殊处理的那一行

-e 直接使用命令行对文本流进行编辑,即使用function

-f 直接将sed编辑好的文本流写入一个文件

-i 直接编辑文件内容,不在屏幕输出

function的内容:

a\ :add, 将后接的字符串添加到[n1,n2]的下一行

c: change,,用后接的字符串替代[n1, n2]之间的行

d :delete, 删除n1, n2之间的行

i\ :insert, 将后接的字符串添加到[n1, n2]的上一行

p:print打印,通常和-n一同使用

s:search,取代

栗子,将示例文件所有的main()变成main(void),显示1到4行,注意如果使用行号表示处理的内容,可以直接在后面接p,a\等命令,如果使用字符串,需要使用//将字符串和命令隔离开:

$ sed -e 's/main()/main(void)/' test_grep|sed -n '1,4p'
#include<stdio.h>
int main(void){
printf("hello,world!");
}

awk

awk既是一门语言也是一个文本流处理工具,这里我们只说作为命令的awk,awk是对文本流以字段为单位进行替换,删除,新增,提取等操作的工具, 默认的字段的分隔符为”tab“或”空格“,可以使用-F来重新指定

$awk [-Ffv]'条件类型1{动作1}条件类型2{动作2}...' filename

-F表示重新设置分隔符,awk的默认分隔符是tab或空格,不过不指定,是这样的:

$ last -n 3
jiang pts/0 :0 Mon Sep 19 17:34 still logged in
jiang pts/0 :0 Mon Sep 19 16:50 - 16:50 (00:00)
jiang pts/0 :0 Mon Sep 19 16:29 - 16:43 (00:14)
$ last -n 4|awk '{print $1}'
jiang
jiang
jiang
jiang

如果指定了以“M”为分隔符`:

$ last -n 3|awk -F 'M' '{print $1}'
jiang pts/0 :0
jiang pts/0 :0
jiang pts/0 :0

awk有三个内建变量来表示处理的行有的数据信息:

NF 每一行拥有的字段总数

NR 目前awk所处理的是第几行的数据

FS 目前的分隔字符,默认是"空格"

可以使用>, <, >=, <=, ==, != 来做逻辑判断

grep, sed, awk的更多相关文章

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

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

  2. Linux三剑客grep/sed/awk

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

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

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

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

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

  5. linux grep,sed,awk和diff的使用

    1:grep//显示行 # grep 'main' /home/myhome/a.c//将a.c含有main的行显示出来 # grep -v 'main' /home/myhome/a.c //显示除 ...

  6. Using of grep sed awk on Linux

    #This script is to parse data file: fun0() { ## [INFO1]a=1   b=2 c=3 [INFO2]a=7 b=8 c=9 [INFO3] a=x ...

  7. 5_find grep sed awk 详解

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

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

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

  9. grep sed awk 3个Linux中对文件内容操作的命令

    在学习Linux命令中,发现3个有关于文件内容操作的命令grep,sed和awk,在这里简单汇总这3个命令主要作用,在实际中找到最合适的情景应用,详细用法可以参考其他文章. 1.grep命令 主要作用 ...

随机推荐

  1. P6 Enterprise Project Portfolio Contract Management

    Find documentation for Primavera products here: Primavera Cloud Services Primavera Prime Primavera P ...

  2. Oracle Fusion Applications (11.1.8) Media Pack and Oracle Application Development Framework 11g (11.1.1.7.2) for Microsoft Windows x64 (64-bit)

    Oracle Fusion Applications (11.1.8) Media Pack for Microsoft Windows x64 (64-bit) 重新搜索   常见问题    提示  ...

  3. Javascript小笔记

    1.315360000000 毫秒 = 10年 2.Javascript 取时间截: JavaScript 获取当前时间戳: 第一种方法: var timestamp = Date.parse(new ...

  4. Ubuntu系统操作快捷键

    Ubuntu操作基本快捷键* 打开主菜单 = Alt + F1* 运行 = Alt + F2* 显示桌面 = Ctrl + Alt + d* 最小化当前窗口 = Alt + F9* 最大化当前窗口 = ...

  5. WinForm设置右键菜单

    上一篇:设置窗体透明C#代码 如果要实现MDI窗体的右键菜单,可以添加一个contextMenuStrip(ID设置为:contextMenuStrip_hewenqi),然后设置窗体的Context ...

  6. Python基础:模块

    一.概述 二.导入语句 1.基本语法 2.推荐风格 三.模块 1.模块名 2.模块属性 3.可导出的公有属性 4.直接执行 四.包 1.包名 2.包属性 3.可导出的公有属性 4.其他 五.导入原理 ...

  7. Win7如何部署apache服务器(包括SSL设置)

    部署普通站点 1.首先下载apache24版本,下载地址为http://pan.baidu.com/s/1pLmvDgB; 2.解压到你的电脑本地目录,如D:\Apache24(下文配置都会以当前目录 ...

  8. ActiveReports 报表应用教程 (8)---交互式报表之动态过滤

    用户可以使用ActiveReports参数 (Parameters)集合把数据提供给报表中的文本框或图表,也可以选择数据的一个子集显示到报表的特定区域,或者是把数据从主报表象子报表传递.用户可以通过三 ...

  9. java注释指导手册

    译文出处: Toien Liu   原文出处:Dani Buiza 编者的话:注解是java的一个主要特性且每个java开发者都应该知道如何使用它. 我们已经在Java Code Geeks提供了丰富 ...

  10. mybatis/callablestatement调用存储过程mysql connector产生不必要的元数据查询

    INFO | jvm 1 | 2016/08/25 15:17:01 | 16-08-25 15:17:01 DEBUG pool-1-thread-371dao.ITaskDao.callProce ...