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命令 主要作用 ...
随机推荐
- Node.js面试题:侧重后端应用与对Node核心的理解
Node是搞后端的,不应该被被归为前端,更不应该用前端的观点去理解,去面试node开发人员.所以这份面试题大全,更侧重后端应用与对Node核心的理解. node开发技能图解 node 事件循环机制 起 ...
- PHP--正则表达式和样式匹配--小记
正则表达式: Regular expression PHP 支持两种风格的函数: POSIX 风格的,有些低版本软件支持,目前高版本的有些已经废弃不用了,比如 zend studio 的较新版本. p ...
- 甲骨文白桃花心木P6 EPPM 8.2项目点提供样本
甲骨文白桃花心木样例代码 除非明确确定,这里的示例代码不是认证或Oracle支持;它只是用于教育或测试的目的. 你必须接受 许可协议下载此示例代码. 接受 许可协议 | 下降 许可协议 的名字 ...
- sqlsever备份,还原和导入导出方法
一:sqlsever数据库的几种备份和还原方法: 第一种:备份还原方法 1.选择要备份的数据库-任务-备份- 打开之后会看到里面有: 常规:在常规页面中我们可以看到:右下角位置有一个可以更改存储(备份 ...
- Asp.Net 配置IISExpress允许外部访问
1.找到IISExpress的配置文件,或位于(文档/IISExpress/config)文件夹下,打开applicationhost.config,找到如下代码:<site name=&quo ...
- scons学习
http://blog.csdn.net/andyelvis/article/category/948141 http://www.scons.org/doc/production/HTML/scon ...
- 内核移植和文件系统制作(3)Ramdisk简介和常见问题
一,Ramdisk简介: Ramdisk是一种基于内存的虚拟文件系统(并非一个实际的文件系统),它将一部分固定大小(这个大小在编译内核的make menuconfig时配置)的内存当作硬盘一个分区来使 ...
- 泛函编程(8)-数据结构-Tree
上节介绍了泛函数据结构List及相关的泛函编程函数设计使用,还附带了少许多态类型(Polymorphic Type)及变形(Type Variance)的介绍.有关Polymorphism的详细介绍会 ...
- Delphi又要换东家了
前几天听到这个消息,搞个FMX出来,64位还没搞清楚,又开始折腾了!http://www.deltics.co.nz/blog/posts/2371 No Seriously – Let’s Buy ...
- Hibernate中的一对一关联和组件的映射
Hibernate提供了两种映射一对一映射关联关系的方式: 01.按照外键映射 02.按照主键映射 下面以员工账号表和员工档案表(员工账号和档案表之间是一对一的关系)为例,介绍这两种映射关系,并使用这 ...