Linux 文本三剑客(grep, awk, sed)

一、grep(文本查找)

grep,globally search a regular expression and print

文本搜索工具(类似于windows中的查找功能?),支持正则表达式,常用于以下场景:

1. 在ls的输出结果中过滤指定文件名或后缀的文件

root家目录下过滤包含temp的文件

2. 在文本文件中匹配特定内容

tempForGrep目录下的文档site.txt,记录若干网址和字符
-r 递归查询当前目录下子文件的内容
-n 标记查找内容的行号
-i 忽略大小写

3. 结合正则表达式匹配邮箱或ip

4. 递归查找子目录(忽略文件/文件夹)

grep -r --exclude-dir=temp2 com ./ ,在当前目录下递归查找文件,--exclude-dir=temp2,可以忽略子目录temp2下的site2.txt文件,该功能常用来排除不需要查阅的代码库文件。

 --exclude-dir= 忽略目录

参考链接:grep时排除指定的文件和目录 - dolinux - 博客园

grep简介
windows,office中的查找功能
grep支持的正则表达式符号
grep 命令参数

二、awk(文本样式扫描与处理)

awk是三个创始人名字的缩写(Alfred Aho,Peter Weinberger,Brian Kernighan),具有不同的版本AWK、NAWK、GAWK。

awk简介

awk 工具使用时,需要包含BEGIN、BODY、END三个代码块,对应如下功能:

BEGIN块,程序初始化,变量定义及赋值,可以省略。

body块,逐行读取文档每一行,并执行处理。

END块,用于程序结束后的简单输出,可以省略。

awk工作示意图
代码块功能

内置变量中,最常用的就是NR,从0计数,每读取一行文件自加一,当有多个文件的时候,连续计数不中断;FNR表示,从0计数,每当awk打开一个新文件的第一行,FNR从0开始自加一。NR==FNR表示处理第一份文件,BR>FNR表示处理第二份文件。

FS,域分隔符/列分隔符,也可以用awk -F " : "参数指定域分隔符,系统默认的域分隔符是空格。

awk内置变量

awk的主要使用场景:

1. 过滤指定列的数据:

$1表示第一列,-F ":"和BEGIN{FS=":"}都表示指定分隔符

awk输出两份文件的差别项

2. 比较两份文件,输出第一份文件没有第二份文件有的数据

例:b.txt表示学生姓名,a.txt表示学生信息,通过awk可以比较输出未处理b.txt中未处理的学生姓名。

NR==FNR表示正在处理第一份文件,即a.txt。利用awk内置的一维数组结构,对a.txt中以处理的第一列数据打标。NR>FNR表示第二份文件,即b.txt,判断当前元素是否位于数组,对于不在数组中的元素,输出显示。

awk过滤指定列的数据

三、sed(流编辑器)

逐行读取做模式匹配,默认只处理不修改源文件的内容。

1. 字符替换

sed 's/old/new/' file.txt

2. 字符插入

# 在第2行前插入a2
sed '2i\a2' file.txt

# 在第2行后插入b2
sed '2a\b2' file.txt

3. 删除行

# 删除第2~4行,并写入源文件
sed -i '2,4d' 2.txt

四、文档增删改查的综合练习

1. 使用tail查看新增用户信息,新增用户在/etc/passwd的末尾,使用tail命令查看文档倒数n行

2. 使用awk对数据分列,域分隔符为":",输出第一列用户名

3. 使用sed对用户名中的rd替换成Research & Develop

至此,可以实现对文档的增删改查操作。

管道符使用说明

参考链接:

linux查看文件前几行和后几行的命令_cat 读后5行的内容-优快云博客

Linux管道符|命令使用详解_linux中|的用法-优快云博客

### 回答1: Linux三剑客指的是 awksedgrepawk 是一种用来处理文本文件的工具,它可以根据指定的模式进行自动分割并进行数据处理。 sed 是一种流编辑器,它可以对文本文件进行替换、删除和插入操作。 grep 是一种文本搜索工具,它可以在文本文件中搜索指定的字符串。 ### 回答2: Linux三剑客,分别是awksedgrep,它们是Linux系统中非常重要的命令行工具,它们通常被称为文本处理工具。这些工具通常被用于筛选、搜索和处理文本文件。 grep是一种常见的文本搜索工具,可以在文件和文件夹中搜索指定的字符串或正则表达式。grep可以搜索多个文件并返回匹配行的输出。它是处理日志文件或查找匹配模式的最佳工具之一。 sed是一种流编辑器,可以按照行处理文本文件。它可以通过替换、删除和插入操作来修改文件内容。在大型文件中查找并替换模式是sed的主要作用。该工具通常在文本文件中提取有用信息是常用。 awk是一种强大的文本操作工具,可以分析大型文本文件并对其进行处理。该工具可以遍历行和列,并提供强大的文本处理工具,如计算、过滤和转换数据。awk的处理速度非常快,适用于处理大型数据文件。 Linux三剑客awk是最强大的工具,它可以执行复杂的文本数据操作和转换,可大大简化开发和管理过程。sed主要用于简单的文本数据过滤和替换,而grep主要用于搜索文件和定位特定行。 总之,Linux三剑客文本数据处理方面具有不可替代的重要作用。对于Linux操作系统的开发人员和管理员来说,熟练使用这些工具可以提高他们的工作效率,使他们更容易管理和操作文本文件。 ### 回答3: Linux三剑客awk sed grep是我们在日常工作中经常使用的三个命令。它们都属于文本处理工具,可以用于查找、处理、分析文本文件等。 首先,grep是最常用的文本搜索工具。grep可以用来快速查找文件中指定的字符串或正则表达式,并将包含该字符串或正则表达式的行打印出来。常用的命令有grep、egrep和fgrep。比如,我们可以使用grep命令来查找一个文件中包含指定关键字的行,可以使用egrep来支持正则表达式搜索,使用fgrep来进行快速搜索,不支持正则表达式。 其次,sed是一种流编辑器,主要用于对文本文件进行替换、删除、添加、插入等操作。sed命令可以通过管道(|)将多个命令组合起来,从而进行复杂的文本操作。sed可以快速完成对文本文件的修改操作,比如替换文件中的某些内容、删除特定的行、在文件中插入新的文本等。sed的命令形式是“command", 比如"s/old/new/g",表示将old替换成new。 最后,awk是一种强大的文本处理工具,主要用于在文本文件中查找、处理以及格式化特定的字段。和grepsed不同的是,awk更加灵活,可以在处理过程中做到数据过滤和加工,对于大数据的处理特别有用。awk命令的常用语法是"pattern {action}"。其中,pattern代表要匹配的模式,而action代表模式匹配时需要执行的动作,我们可以在其中添加处理语句来对文件进行各种处理操作,比如计算、统计、格式化等。 综上所述,Linux三剑客awk sed grep是我们在文本处理工作中不可或缺的三个工具,不同的工具可以用于处理不同的文本操作,也可以用于搭配使用,以完成更加复杂的文本处理工作。对于需要经常处理文本的人员来说,掌握这些工具是非常必要的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值