linux命令进阶:grep,sed,awk全家桶(文本处理技术详例)(代码片段)

陆海潘江小C 陆海潘江小C     2023-04-01     639

关键词:

目录

一、前言回顾

二、grep

1、grep是什么?

2、grep用法详例解析

三、sed

1、sed是什么?

 2、sed用法详例解析

四、awk

1、awk是什么?

2、awk用法详例解析

五、总结


一、前言回顾

我之前写的一篇《Linux基本命令及编程环境实验 》,一度爆文,成为热门文章。众所周知,Linux是一类强大的操作系统,它的功能强大,稳定性高,在大公司企业应用广泛,掌握Linux的相关命令操作和知识体系显得十分重要。Linux博大精深,只学习到入门时候就感受到当初设计者的智慧,当然Linux系统也是大牛们智慧的结晶,不断优化迭代更新,衍生了许多版本类型。相对熟悉且使用普遍的发行版本就是Ubuntu。

这篇继续学习探索Linux,算是进阶一步,在前面的基础上,通过详细例子掌握更高级的命令,主要为文本处理技术,grep、sed、awk三个命令,感受神奇强大的Linux!

Linux系统学习相关文章:

  1. Linux基本命令及编程环境实验 [https://blog.csdn.net/Charzous/article/details/108204520]
  2. Linux环境编程进程间通信机制,玩转Linux,理解更透彻![https://blog.csdn.net/Charzous/article/details/108287075]

二、grep

1、grep是什么?

UNIX grep家族由命令grep、egrep和fgrep组成。grep命令在文件中全局搜索正则表达式,并打印包含该表达式的所有行。egrep和fgrep命令是grep的变体。egrep命令是一个扩展的grep,支持更多的re元字符。fgrep命令称为固定grep。

grep命令格式:

grep [option] pattern filename

pattern为正则表达式,filename为目标操作文件名,option为可选择项,具体包括:

-i

忽略字母的大小写
-n打印行号和匹配的行
-v打印不匹配的行
-c只打印匹配的行数
-w以字符串的形式搜索给定的模式
-l只打印具有匹配行的文件名称

2、grep用法详例解析

下面通过例子学习grep命令的使用,给定当前目录下的donors文本:

Mike Harrington:(510) 548-1278:250:100:175
Christian Dobbins:(408) 538-2358:155:90:201
Susan Dalsass:(206) 654-6279:250:60:50
Archie McNichol:(206) 548-1348:250:100:175
Jody Savage:(206) 548-1278:15:188:150
Guy Quigley:(916) 343-6410:250:100:175
Dan Savage:(406) 298-7744:450:300:275
Nancy McNeil:(206) 548-1278:250:80:75
John Goldenrod:(916) 348-4278:250:100:175
Chet Main:(510) 548-5258:50:95:135
Tom Savage:(408) 926-3456:250:168:200
Elizabeth Stachelin:(916) 440-1763:175:75:300

 题目:

  1. Print all lines containing the string Tom.
  2. Print all lines where the person's first name starts with J.
  3. Print all lines ending in 175.
  4. Print all lines that don't contain 175.
  5. Print all lines where the phone number is in the 206 area code.

解答:

1. grep 'Tom' donors
2. grep '^J' donors
3. grep '175\\>' donors
4. grep -v '175' donors
5. grep '(206)' donors

结果:

三、sed

1、sed是什么?

sed命令是一种流线型的非交互编辑器(Stream editor)。sed程序不与编辑器交互工作,而是允许在命令行键入编辑命令,命名文件,然后在屏幕上查看编辑命令的输出。默认情况下,所有行都打印到屏幕上。sed编辑器是非破坏性的,可以使用shell重定向保存输出,否则它不会更改文件内容。

sed命令格式:

sed [option] '[address]command' filename

常用的option:-n,表示只打印出匹配到的行

command为/pattern/形式的正则表达式,这里sed命令与grep不同在于多了一个address选项,表示要对匹配的文本进行的操作,常用的有:

d删除行
s替换匹配的字符串
p打印行
a

向当前行追加一行或多行文本

 2、sed用法详例解析

 

题目:

  1. Change John's name to Joanthan
  2. Delete the first three lines
  3. Print lines 5 through 10
  4. Delete lines containing Mike
  5. Delete all blank lines

 

解答:

1.sed 's/John/Joanthan/' donors
2.sed '1,3d' donors
3.sed -n '5,10p' donors
4.sed '/Mike/d' donors
5.sed '/^[ \\t]*$/d' donors

结果:

四、awk

1、awk是什么?

Awk是一种UNIX/Linux编程语言,用于操作数据和生成报告。nawk是一个较新的版本,而nawk是Gnu版本。数据可以来自标准输入、一个或多个文件,也可以作为流程的输出。awk可以在命令行中用于简单的操作,也可以将其写入用于大型应用程序的程序中。因为awk可以操作数据,所以它是shell脚本和管理小型数据库中不可缺少的工具。

awk命令格式:

  1. awk 'pattern' filename
  2. awk 'action' filename
  3. awk 'pattern action' filename

同样类似上面的两种命令,awk功能更加强大,可以指定分隔符按字段取出字符串。

2、awk用法详例解析

题目:

  1. Print all the phone numbers
  2. Print Dan's phone number
  3. Print all last names beginning with D
  4. Print Main’s campaign contributions. Each value should be printed with a leading dollar sign; e.g., $250 $100 $175.
  5. Print the name and total contribution of each person.

 

解答:

1.awk -F: 'print $2' donors
2.awk -F: '/Dan/print $2' donors
3.awk -F'[ :]' '$2~/^D/print $2' donors
4.awk -F'[ :]' '$2~/Main/print "$"$5,"$"$6,"$"$7' donors
5.awk -F: 'print $1,$3+$4+$5' donors

结果:

  1. (406) 298-7744
  2. Dobbins
    Dalsass

  3. $50 $95 $135

  4.  

五、总结

这篇继续学习探索Linux,进阶一步,通过详细例子掌握更高级的命令,主要为文本处理技术,grep、sed、awk三个命令,感受神奇强大的Linux。从详细例子学习中发现,掌握正则表达式也是很关键。众所周知,Linux是一类强大的操作系统,它的功能强大,稳定性高,在大公司企业应用广泛,掌握Linux的相关命令操作和知识体系显得十分重要。

 

如果觉得不错欢迎“一键三连”哦,点赞收藏关注,有问题直接评论,交流学习!

Linux系统学习相关文章:

  1. Linux基本命令及编程环境实验 [https://blog.csdn.net/Charzous/article/details/108204520]
  2. Linux环境编程进程间通信机制,玩转Linux,理解更透彻![https://blog.csdn.net/Charzous/article/details/108287075]

我的CSDN博客:https://blog.csdn.net/Charzous/article/details/110507267

linux的awk、grep、sed工具,实现文本查找、编辑、格式化

...文本,awk适合格式化文本,对文本进行较复杂格式处理。命令格式:grep[option]patternfile用于过滤/搜索的特定字符,可与正则表达式配合,使用上十分灵活。命令格式:sed[options]'[地址定界]command'file(s)用于编辑一个或多个文... 查看详情

linuxbash文本处理命令awk,sed,grep用法(代码片段)

Linuxbash文本处理命令grep,sed,awk用法grep,sed,awk的主要用途及区别:grep用法grep-rn"hello,world!"././:表示路径为当前目录.-r是递归查找-n是显示行号如果加上-i,则为忽略大小写。sed用法awk用法 查看详情

学习计划20180918

第一阶段:初级入门  1、Linux基础知识、基本命令(起源、组成、常用命令如cp、ls、file、mkdir等常见操作命令)  2、Linux用户及权限基础  3、Linux系统进程管理进阶  4、linux高效文本、文件处理命令(vim、grep、sed、awk... 查看详情

notes12用swagger开发rest,正则,linux命令sed/awk/grep(代码片段)

文章目录1.swagger:用来规范前端和后端统一接口管理2.正则2.1组group3.sed4.awk5.grep1.swagger:用来规范前端和后端统一接口管理rest接口本身就是http的接口,只不过rest接口一般满足一定的规范,这个规范下的http接口就... 查看详情

linux系统常用指令grepsed和awk(代码片段)

...wk之行与列3.3awk之模式匹配3.4awk数组3.5awk循环与判断1概论命令特点场景grep过滤grep命令过滤速度是最快的sed替换,修改文件内容,取行进行替换/修改文件内容取出某个范围的内容awk取列,统计 查看详情

linux文本三剑客--grepsedawk(代码片段)

...Linux文本三剑客--grep、sed、awk1、grep1.1什么是grep1.2使用grep命令格式命令参数基本正则表表达式匹配字符匹配次数位置锚点:定位出现的位置扩展正则表达式2.sed2.1什么是sed2.2使用sed命令格式常用选项options地址定界编辑命令comm... 查看详情

linux三剑客的基本使用——grep、sed、awk

参考技术Agrep、sed、awk是linux功能非常强大的三个命令,grep是查找过滤文本,sed是对文本进行编辑替换,awk是对文本进行分析报告。最简单的理解就是找什么东西用grep,想修改什么内容用sed,想格式化内容用awk。创建一个文件名... 查看详情

unix&linux的文本处理工具--grep,sed&awk

...全局匹配并且拥有自身的主输入循环。除去影响控制流的命令或语句(sed中:t,b;awk中continue,break等)默认对文本的每一读取的行依次执行相应的命令或语句。awk相较于文本编辑工具更像是一门语言,awk条件、循环、判断语句有显... 查看详情

linux生产文本处理掌握这些就够了:awk,gawk,sed,grep,sort

...文件中各种数据的日常处理任务自动化。但仅靠shell脚本命令来处理文本文件的内容有点力不从心的。如果想在shell脚本中处理任何类型的数据,掌握grep,sed和gawk工具可以达到事半功倍的效果。企业开发中常用,高阶命令... 查看详情

linux生产文本处理掌握这些就够了:awk,gawk,sed,grep,sort

...文件中各种数据的日常处理任务自动化。但仅靠shell脚本命令来处理文本文件的内容有点力不从心的。如果想在shell脚本中处理任何类型的数据,掌握grep,sed和gawk工具可以达到事半功倍的效果。企业开发中常用,高阶命令... 查看详情

linux三大文件处理工具(grep/sed/awk)(代码片段)

grep,sed与awk是linux三个很强大的文件处理工具。gerp查找,sed编辑,awk根据内容分析并处理。现在我们去了解一下这三种文件处理工具有什么不同(肯定不同了,要不然为什么有三种。。。) grep(关键字:截取) 文本搜集工具,结... 查看详情

shell❀三剑客-grep+sed+awk(代码片段)

...2.2常见语法2.3使用方法2.3.1地址边界的设定2.3.2基础编辑命令2.3.3扩展操作2.3.4命令执行案例3、Awk-列匹配3.1awk能做什么3.2执行原理3.3命令的使用3.4语法格式与使用3.4.1输出方式3.4.1.1print的使用格式 查看详情

shell❀三剑客-grep+sed+awk(代码片段)

...2.2常见语法2.3使用方法2.3.1地址边界的设定2.3.2基础编辑命令2.3.3扩展操作2.3.4命令执行案例3、Awk-列匹配3.1awk能做什么3.2执行原理3.3命令的使用3.4语法格式与使用3.4.1输出方式3.4.1.1print的使用格式 查看详情

notes11用swagger开发rest,正则,linux命令sed/awk/grep,websocket,dns(代码片段)

文章目录1.swagger:用来规范前端和后端统一接口管理2.正则:https://regex101.com/(regularexpression)2.1组group:如上只想获取@前面的用户名,上面中括号,大括号都出现了,就差小括号3.sed:替换,删除&#... 查看详情

如何通过命令行实用程序操作文本:grep、cut、awk、sed 或 BBEdit(Grep 查找选项)

】如何通过命令行实用程序操作文本:grep、cut、awk、sed或BBEdit(Grep查找选项)【英文标题】:Howtomanipulatetextviacommand-lineutilities:grep,cut,awk,sedorBBEdit(GrepFindOption)【发布时间】:2020-06-2419:34:36【问题描述】:我正在为一个srt文件而... 查看详情

find/pg/grep/sed/awk命令

findpathname-options[-print-exec-ok...]   -print:find命令将匹配的文件输出到标准输出。     当前目录下查找文件权限位为755的文件   $find.-perm755-print      查看详情

linux、grep、awk、sed删除关键字的上一行

随便用什么命令,例子如下:afssafgsdfaagwfsad454如关键字为wf则删除sdfaagsed'N;/\n.*关键字/!P;D'文件名回答的很好不过.*加的有些画蛇添足了,直接写成sed'N;/\n关键字/!P;D'文件名,就好了把两会合并为一行\n就代表... 查看详情

linux系统常用指令grepsed和awk(代码片段)

...wk之行与列3.3awk之模式匹配3.4awk数组3.5awk循环与判断1概论命令特点场景grep过滤grep命令过滤速度是最快的sed替换,修改文件内容,取行进行替换/修改文件内容取出某个范围的内容awk取列,统计计算取列对比,比较&... 查看详情