grep, sed, awk
这几个工具是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的更多相关文章
- linux三剑客grep|sed|awk实践
最好先学习正则表达式的基本用法,以及正则表达式BREs,EREs,PREs的区别 此坑待填 grep sed awk
- Linux三剑客grep/sed/awk
grep/sed/awk被称为linux的“三剑客” grep更适合单纯的查找或匹配文本: sed更适合编辑匹配到的文本: awk更适合格式化文本,对文本进行较复杂各式处理: Grep --color ...
- 【Linux】 字符串和文本处理工具 grep & sed & awk
Linux字符串&文本处理工具 因为用linux的时候主要用到的还是字符交互界面,所以对字符串的处理变得十分重要.这篇介绍三个常用的字符串处理工具,包括grep,sed和awk ■ grep ...
- [svc]linux正则实战(grep/sed/awk)
企业实战: 过滤ip 过滤出第二行的 192.168.2.11. eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 ine ...
- linux grep,sed,awk和diff的使用
1:grep//显示行 # grep 'main' /home/myhome/a.c//将a.c含有main的行显示出来 # grep -v 'main' /home/myhome/a.c //显示除 ...
- 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 ...
- 5_find grep sed awk 详解
find :查找文件系统中指定的文件.可以按文件名(-name) 权限(-perm) 归属人 查找. find 要查找文件的路径 表达式 *通配符 可以添加在文件名的任意位置 常用的例子( ...
- 【shell脚本练习】grep sed awk
下面是简单学习之后做得练习题,如果有不对的或者说解题思路不好的,请交流啊. Grep 练习 文件名grepfile Steve Blenheim:238-923-7366:95 Latham Lane ...
- grep sed awk 3个Linux中对文件内容操作的命令
在学习Linux命令中,发现3个有关于文件内容操作的命令grep,sed和awk,在这里简单汇总这3个命令主要作用,在实际中找到最合适的情景应用,详细用法可以参考其他文章. 1.grep命令 主要作用 ...
随机推荐
- Spring基础—— Bean 的作用域
一.在 Spring Config 文件中,在 <bean> 元素的 scope 属性里设置 Bean 的作用域.默认为 singleton ,单例的. 二.在不引入 spring-web ...
- MEF(Managed Extensibility Framework )的入门介绍
1.什么是MEF MEF是一个来自于微软协作构建扩展应用的新框架,它的目的是在运行中的应用中添加插件.MEF继承于.NET 4.0 Framework平台,存在于各种应用平台的系统程序集中 2.程序集 ...
- python学习笔记 - 初识socket
socket socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. sock ...
- 使用innerHTML获取HTML代码时,HTML标记属性的双引号好多都消失不见了,原来是属性值中包含空格才会保留双引号
最近搞的一个项目中所使用的方式比较奇怪,用Label显示HTML内容,然后不断地使用JS把Label的innerHTML复制到TextBox中. 但是,昨天发现了一个问题,获取元素值的时候,有时候正常 ...
- 母版页 VS shtml—ASP.NET细枝末节(3)
这算是html的重用吧? 摘自: http://www.cnblogs.com/mcad/p/4352665.html 网页很多地方长得一样,也有不一样的地方. 把网页中一样的地方,提取出来,形成一个 ...
- 【JS复习笔记】01 基本语法
数字: JS只有一种数字类型,相当于double.(不知道为什么,我每次打double输入法都会出现逗比了三个字) NaN是一个数值,可以用isNaN(number)检测NaN Infinity表示所 ...
- 重新想象 Windows 8 Store Apps (34) - 通知: Toast Demo, Tile Demo, Badge Demo
[源码下载] 重新想象 Windows 8 Store Apps (34) - 通知: Toast Demo, Tile Demo, Badge Demo 作者:webabcd 介绍重新想象 Wind ...
- 与众不同 windows phone (43) - 8.0 相机和照片: 镜头的可扩展性, 图片的可扩展性, 图片的自动上传扩展
[源码下载] 与众不同 windows phone (43) - 8.0 相机和照片: 镜头的可扩展性, 图片的可扩展性, 图片的自动上传扩展 作者:webabcd 介绍与众不同 windows ph ...
- kFreeBSD 7.0于2013/05/04发布 桌面环境 GNOME 3....
kFreeBSD 7.0于2013/05/04发布 桌面环境 GNOME 3.4, KDE 4.8.4, Xfce 4.8, and LXDE
- [PE结构分析] 5.IMAGE_OPTIONAL_HEADER
结构体源代码如下: typedef struct _IMAGE_OPTIONAL_HEADER { // // Standard fields. // +18h WORD Magic; // 标志字, ...