Linux三剑客(grep、sed、awk)详解

前言:本文主要介绍一下Linux中最重要的三个命令,他们在业界被誉为“三剑客”,它们分别是:awk,sed,grep。它们三个侧能的功能不同,grep擅长查找功能,sed擅长取行和替换,awk擅长取列。下面分别介绍三者的主要option和应用实例。

一、文本过滤工具grep(egrep)

grep [OPTIONS] PATTERN [FILE...]

1.1、主要Option

--color=auto 对匹配到的文本着色显示

-v 显示不被pattern匹配到的行

-i 忽略字符大小写

-n 显示匹配的行号

-c 统计匹配的行数

-o 仅显示匹配到的字符串

-q 静默模式,不输出任何信息

-A # after, 后#行

-B # before, 前#行

-C # context, 前后各#行

-e 实现多个选项间的逻辑or关系grep –e ‘cat ’ -e ‘dog’ file

-w 匹配整个单词

-E 使用ERE,相当于egrep

-F 相当于fgrep,不支持正则表达式

1.2、grep应用举例

查找 文件中包含root的行grep -n root /etc/passwd

二、流编辑器 --- 强大的替换工具sed

sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。然后读入下行,执行下一个循环。如果没有使诸如‘D’ 的特殊命令,那会在两个循环之间清空模式空间,但不会清空保留空间。这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。

sed [option]... 'script' inputfile

2.1、主要Option

-n 不输出模式空间内容到屏幕,即不自动打印

-e 多点编辑

-f /PATH/SCRIPT_FILE: 从指定文件中读取编辑脚本

-r 支持使用扩展正则表达式

-i 直接编辑文件

-i.bak 备份文件并原处编辑

2.2、Script 定界

不给地址:对全文进行处理

单地址:

#: 指定的行,$:最后一行

/pattern/:被此处模式所能够匹配到的每一行

地址范围:

#,#

#,+#

/pat1/,/pat2/

`#,/pat1/

~:步进

1~2 奇数行

2~2 偶数行

2.3、编辑命令:

d 删除模式空间匹配的行,并立即启用下一轮循环

p 打印当前模式空间内容,追加到默认输出之后

a [\]text1 在指定行后面追加文本,支持使用\n实现多行追加

i [\]text 在行前面插入文本

c [\]text 替换行为单行或多行文本

w /path/somefile 保存模式匹配的行至指定文件

r /path/somefile 读取指定文件的文本至模式空间中匹配到的行后

= 为模式空间中的行打印行号

! 模式空间中匹配行取反处理

s///:查找替换,支持使用其它分隔符,s@@@,s###替换标记:

g 行内全局替换

p 显示替换成功的行

w /PATH/TO/SOMEFILE 将替换成功的行保存至文件中

2.4、应用实例

打印文件的第二行sed -n 2p /etc/passwd

三、 报告生成器awk --- 列提取神器

awk [options] 'program' file…

program:pattern{action statements;..}pattern部分决定动作语句何时触发及触发事件

BEGIN,END

action statements对数据进行处理,放在{}内指明

print, printf

3.1、主要Option

-F 指明输入时用到的字段分隔符

-v var=value 自定义变量

awk执行时,由分隔符分隔的字段(域)标记1,1,2..n称为域标识,n称为域标识,0为所有域。

省略action,则默认执行 print $0 的操作。

3.2、变量

FS:输入字段分隔符;

OFS:输出字段分隔符;

RS:输入记录分隔符;

ORS:输出记录分隔符;

NF:字段数量;

NR:记录号;

NFR:各文件分别计数,记录号。

FILENAME:当前文件名;

ARGC:命令行的参数;

ARGV:数组,保存的是命令行所给定的各参数。注意:以上都是内置变量,在引用时不需要前面加$,每新建一个变量,都需要加个-v,与变量名之间有无空格都可以,变量可以在引用之后再声明,但那一行的输出会输出空行。

3.3、printf命令

printf “FORMAT” , item1, item2, ... 不会自动换行,FORMAT中需要分别为后面每个item指定格式符。

格式符No.

item

表现形式

1

%c

显示字符的ASCII码

2

%d, %i

显示十进制整数

3

%e, %E

显示科学计数法数值

4

%f

显示为浮点数

5

%g, %G

以科学计数法或浮点形式显示数值

6

%s

显示字符串

7

%u

无符号整数

8

%%

显示%自身操作符No.

格式符

item表现形式1

#[.#]

第一个数字控制显示的宽度;第二个#表示小数点后精度,%3.1f

2

-

左对齐(默认右对齐) %-15s

3

+

显示数值的正负符号 %+d操作符算术操作符:x+y, x-y, x*y, x/y, x^y, x%y-x: 转换为负数

+x: 转换为数值

比较操作符:==, !=, >, >=,

模式匹配符:~:左边是否和右边匹配包含 !~:是否不匹配

逻辑操作符:与&&,或||,非!

函数调用:function_name(argu1, argu2, ...)

条件表达式(三目表达式):selector?if-true-expression:if-false-expressionPATTERN:根据pattern条件,过滤匹配的行,再做处理如果未指定:空模式,匹配每一行

/regular expression/:仅处理能够模式匹配到的行,需要用/ /括起来

relational expression: 关系表达式,结果为“真”才会被处理

line ranges:行范围 startline,endline:/pat1/,/pat2/不支持直接给出数字格式

BEGIN/END模式

awk控制语句{ statements;… } 组合语句

if(condition) {statements;…}

if(condition) {statements;…} else {statements;…}

while(conditon) {statments;…}

do {statements;…} while(condition)

for(expr1;expr2;expr3) {statements;…}

break

continue

delete array[index]

delete array

exit

3.4、应用实例

打印文件第一列(文件分隔符为‘:’)awk -F ':' '{print $1}' /etc/passwd

四、参考文献

标签:grep,sed,awk,statements,分隔符,匹配,三剑客

来源: https://blog.csdn.net/gsjthxy/article/details/106985813

linux三剑客试题,Linux三剑客(grep、sed、awk)详解相关推荐

  1. linux四剑客-grep/find/sed/awk/详解-技术流ken

    四剑客简介 相信接触过linux的大家应该都学过或者听过四剑客,即sed,grep,find,awk,有人对其望而生畏,有人对其爱不释手.参数太多,变化形式太多,使用超级灵活,让一部分人难以适从继而望 ...

  2. linux三剑客及正则表达(grep,sed,awk)

    首先我们现在知道Linux下一切皆文件,对Linux的操作就是对文件的处理,那么怎么能更好的处理文件呢?这就要用到我们上面的三剑客命令. 在说这三个命令前我们要插入一个小插曲就是"正则表达式 ...

  3. Linux三剑客之awk详解

    第一篇 awk简介与表达式实例 一种名字怪异的语言 模式扫描和处理,处理数据和生成报告. awk不仅仅是linux系统中的一个命令,而且是一种编程语言:它可以用来处理数据和生成报告(excel):处理 ...

  4. Shell ❀ 三剑客 - Grep + Sed + Awk

    文章目录 八.三剑客 - Grep + Sed + Awk 1.Grep - 过滤 1.1 常用grep参数 1.2 使用方法 2.Sed - 行匹配 2.1 执行原理 2.2 常见语法 2.3 使用 ...

  5. 三剑客grep sed awk

    三剑客 正则(RE)表达式 应用场景 规则 注意事项 正则符号 基础正则 扩展正则 正则实例 正则 VS 通配符 三剑客 grep sed sed核心应用 awk awk执行过程 内置变量 awk 正 ...

  6. linux grep sed awk

    linux 文本编辑命令grep sed awk(转)     grep grep (global search regular expression(RE) and print out the li ...

  7. php 字符流在linux,PHP_linux正则表达式awk详解,awk和sed一样是流式编辑器,它 - phpStudy...

    linux正则表达式awk详解 awk和sed一样是流式编辑器,它也是针对文档中的行来操作的,一行一行的去执行.awk比sed更加强大,它能做到sed能做到的,同样也能做到sed不能做到的.awk常用 ...

  8. linux sed p变量,Linux sed 命令详解系列教程之各种问题解决

    本文目录: 1 sed中使用变量和变量替换的问题 2 反向引用失效问题 3 "-i"选项的文件保存问题 4 贪婪匹配问题 5 sed命令"a"和"N& ...

  9. linux 之sed命令详解

    sed命令详解 sed是什么 sed是linux文本处理三剑客之一,全称 StreamEDitor,非常著名的行编辑器,功能十分强大. sed的工作过程 sed处理文本时每次从文件复制出来一行,放在工 ...

最新文章

  1. Linux中添加pycharm源,linux下python+pycharm安装
  2. cmake Debug模式和Release模式
  3. PAT_B_1086_Java(15分)
  4. easyswoole数据库连接池_如何在 Swoole 中优雅的实现 MySQL 连接池
  5. stm32g4 下载算法_难道STM32G4芯片的主频才到80MHz?
  6. 10无法勾选隐藏的项目_Excel超好用的隐藏操作,不可多得
  7. HDU2476:String painter(区间dp)
  8. c++语言代码游戏,c++小游戏(贪吃蛇)源程序
  9. 代码段:js表单提交检测
  10. 记录贴:阿里云 ECS服务器CentOS系统 搭建 Hexo 博客详细教程
  11. 【c语言】malloc函数详解
  12. 优化算法:《Lookahead Optimizer: k steps forward, 1 step back》
  13. sensor gyro_3d not found
  14. 计蒜客习题:农场看守
  15. 文件排版1(C语言)
  16. 跟我一起云计算(6)——openAPI
  17. Android字符串格式化
  18. 计算机游戏是什么意思,端游是什么意思啊,吃鸡端游是什么意思啊
  19. Android EventBus Subscriber class XXXActivity has no public methods called onEvent
  20. ClickHouse 实践

热门文章

  1. 0英文基础能学计算机编程么,我零基础,英语和数学都不好,能学会编程吗?...
  2. 自学python(2):利用opencv实现读图,显示,画框,裁剪的python代码
  3. java编译类代码_Java的源代码中定义几个类,编译结果就生成几个以“.class”后缀的字节码。...
  4. 我收藏的短线操作技巧
  5. 12306排队是什么意思_12306 说:有时候,能排队也是一种幸福!
  6. 郝小亮-读王坚《在线》:互联网能做的和没做的事还有很多
  7. 利用form表单上传图片,图片保存到本地,得到图片名字(后期可以将图片名字存进数据库)
  8. 企业WiFi覆盖,解决覆盖四大难题
  9. micro-ros arduino esp32 ros2 笔记
  10. 使用cookiecutter创建pyramid项目