博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
grep, sed, awk
阅读量:6587 次
发布时间:2019-06-24

本文共 1834 字,大约阅读时间需要 6 分钟。

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

grep

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

$grep [-ABrn] [str] FilePathOrDirPath VS $find [路径] [选项] [参数]
-A [n] #除了该行之外,也列出后续的n行
-B [n] #除了该行之外,也列出之前的n行
-n #显示行号
-r #递归查找所有的目录
示例文档

$ cat -n test_grep     1  #include
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
int main(void){ printf("hello,world!");}

awk

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

$awk [-Ffv]'条件类型1{动作1}条件类型2{动作2}...' filename
-F表示重新设置分隔符,awk的默认分隔符是tab或空格,不过不指定,是这样的:

$ last -n 3jiang    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}'jiangjiangjiangjiang

如果指定了以“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 目前的分隔字符,默认是"空格"
可以使用>, <, >=, <=, ==, != 来做逻辑判断

转载地址:http://umhno.baihongyu.com/

你可能感兴趣的文章
寻找绝对隐蔽的后门的办法 分享
查看>>
深入剖析三层交换机的工作过程
查看>>
如何才能快速匹配到大号?
查看>>
Python实现计算器功能
查看>>
Socket编程实践(3) --Socket API
查看>>
曲线学习PyQt5方案一
查看>>
Hyper-V Server 存储分层
查看>>
通过案例学习调优之--Oracle ASH
查看>>
前端学习 -- Css -- 属性选择器
查看>>
Android自定义控件及自定义属性
查看>>
死磕Spring AOP系列2:剖析Bean处理器之BeanNameAutoProxyCreator
查看>>
如何获得查询的执行计划?(一)
查看>>
这些符号你会打吗?
查看>>
INDEX建立方式对SQL的影响
查看>>
云场景实践研究第13期:新浪微博DCP系统
查看>>
Vbs程序批量修改防火墙路由
查看>>
Asp.net报错汇总:回发或回调参数无效
查看>>
LINUX DNS服务的配置(一)
查看>>
linux抓包工具:tcpdump 工具用法
查看>>
WordPress优化:为原创文章和转载文章分别添加不同的版权申明
查看>>