Linux三剑客(grep,awk,sed)

        在学习之前,我们要思考一个问题:Linux三剑客有哪些?(其实题目已经给出了答案)

引言:        

        Linux三剑客可以提高文本处理能力,系统管理能力和脚本编辑能力,对于Linux系统的使用和管理都有着重要的作用。

        首先我们知道:在Linux下一切皆为文件,所以在Linux下的操作就是对文件的操作,为了更方便对文件操作,需要用到“三剑客”命令。

学习Linux三剑客(grep,sed,awk)有以下作用:

    1,文本处理能力:grep:常用于在文件中搜索指定的字符串,查找

                                   sed:常用于对文本进行替换和编辑,修改

                                   awk:常用于对文本进行分析和处理,分段,处理文本数据

掌握这三个工具可以提高文本处理的效率和精确度。

        2,系统管理能力:Linux三剑客在系统管理中有着广泛的应用,可以用于日志分析,数据提取,批量处理等任务,提高系统管理效率

        3,脚本编程功能:grep,sed,awk可以通过脚本编程的方式进行批量处理和自动化操作,可以白那些复杂的文本处理程序和数据分析程序

        4,提高工作效率:掌握Linux三剑客可以提高工作效率,特别是对于需要处理大量文本数据的工作,可以节省大量的时间和精力

详细介绍:

一,grep:文本搜索工具,用于过滤、搜索特定的字符。

解释:可以帮助用户快速定位包含特定内容的文件或者行。

常用的grep参数:                           

  •         -i:忽略大小写                         
  •         -r:递归搜索子目录                  
  •         -n:显示匹配行的行号                 
  •         -v:显示不包含匹配文本的行   
  •         -c:显示匹配的行数                 

下面将会以Linux中的/etc/passwd文件为例!  

可在Linux中使用cat  /etc/passwd查看中的内容,可以看到非常多!

举例1:使用参数 - i :参数忽略大小写。比如筛选出关于root的内容,不区分大小写

[root@localhost ~]# grep -i "ROOT" /etc/passwd    //他会忽略查找内容的大小写
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

举例2:使用参数 - n :显示匹配行的行号。比如查找关于root的内容并显示内容行号

[root@localhost ~]# grep -n "root" /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin

举例3:配合其他一系列命令使用,比如配合管道符筛选出/etc/passwd中带root关键词的内容

  • 当然这个时候grep也能配合参数使用,比如显示行号
[root@localhost ~]# cat /etc/passwd | grep -n "root"
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin

举例4:使用参数 - v:显示不包含匹配文本的行 

回顾:"^word":表示以word开头

            "word$":表示与word结尾

             "^$":表示空行

在阅读Linux文件的时候发现了某些问题,比如以#开头,空行的内容影响阅读,可以筛选

[root@localhost ~]# grep -v "^#" /etc/yum.conf | grep -nv "^$"    //参数-v配合-n使用
1:[main]
2:cachedir=/var/cache/yum/$basearch/$releasever
3:keepcache=0
4:debuglevel=2
5:logfile=/var/log/yum.log
6:exactarch=1
7:obsoletes=1
8:gpgcheck=1
9:plugins=1
10:installonly_limit=5
11:bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
12:distroverpkg=centos-release

举例5:匹配以root和hzx开头的行,并显示对应的行号

[root@localhost ~]# cat /etc/passwd | grep -n "^\(root\|hzx\)"
1:root:x:0:0:root:/root:/bin/bash
44:hzx:x:1000:1000:hzx:/home/hzx:/bin/bash

解释:在正则表达式中,\( 和 \) 用来表示分组,\| 用来表示逻辑或。

举例6:多文件匹配。多文件匹配时,第一位会告诉你属于什么文件,也能配合参数使用

[root@localhost ~]# grep -n  "root" /etc/passwd /etc/group
/etc/passwd:1:root:x:0:0:root:/root:/bin/bash
/etc/passwd:10:operator:x:11:0:operator:/root:/sbin/nologin
/etc/group:1:root:x:0:

二,sed:常用于 编辑和替换

        sed是一种用来处理文本的工具,它一次处理一行内容。它会把当前处理的行存储在一个临时的缓冲区中,然后对这个缓冲区中的内容进行处理,处理完成后把结果输出到屏幕上。接着再处理下一行,直到文件结束。使用sed不会改变原始文件的内容,除非你使用重定向来保存输出。

在Linux中,sed命令最常用的参数包括:                                                           

  •          -e:允许对输入的文本进行多个编辑操作。                                       
  •          -s:替换指定字符                                                                               
  •          -d:删除操作                                                                                      
  •          -i:直接修改文件内容,而不是仅仅输出到屏幕。                             
  •          -n:禁止默认的输出,只输出经过sed处理的内容。                         
  •           g:表示行内全面替换
  •           p:表示打印行                                                                       

替换操作:s命令

举例1:替换文本中的字符串。

[root@localhost ~]# sed 's/old/new/' file         

解释:匹配file文件中每一行的第一个“old”替换为“new”

举例2:加上 - i 选项,将直接修改文件内容,而不是仅仅输出到屏幕。

[root@localhost ~]# sed -i 's/old/new/' file         

解释:-i直接编辑文件,匹配file文件中每一行的第一个“old”替换为“new”

举例3:使用 - e 参数:允许对输入的文本进行多个编辑操作。

[root@localhost ~]# sed -e 's/old/new/' -e 's/book/books/' file

解释:-e允许对输入的文本进行多个编辑操作,操作的文档为file
#匹配每一行的第一个“old”替换为“new”,再匹配每一行的第一个“book”替换为“books”

全面替换:标记 /g

[root@localhost ~]# sed -i 's/old/new/g' file         

解释:-i直接编辑文件,s为替换,/g会替换每一行中所有的匹配
#将file文件中每一行所有“old”替换为“new”

举例4:使用 - n 参数,禁止默认的输出,只输出经过sed处理的内容。

打印行:p标记

[root@localhost ~]# sed -n '1p' /etc/passwd
root:x:0:0:root:/root:/bin/bash

解释:打印出文件/etc/passwd第1行内容
  • 当然,也能够连续打印多行
[root@localhost ~]# sed -n '1,5p' /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin


解释:打印出文件/etc/passwd中1-5行的内容

删除操作:d命令

举例5:删除空白行

[root@localhost ~]# sed '/^$/d' /etc/named.conf

解释:我们拿DNS的主配置文件为例,删除/etc/named.conf文件中的空白行

举例6:删除文件的第2行文件

[root@localhost ~]# sed '2d' /etc/named.conf

举例7:删除文件的第2行到末尾的所有行

[root@localhost ~]# sed '2,$d' /etc/named.conf

举例8:删除文件最后一行

[root@localhost ~]# sed '$d' /etc/named.conf

举例8:删除文件中所有开头是test的行

[root@localhost ~]# sed '/^test/d' /etc/named.conf

三,awk:报告生成器,格式化文本

        当处理文本文件时,awk是一个非常强大的工具。它可以用于搜索文件、提取信息、进行格式化输出以及执行计算等操作。

以下是一些基本的使用方法和示例:

举例1: 提取特定字段
   如果你有一个包含多个字段的文本文件,你可以使用awk来提取其中的某些字段。

        假设有一个包含学生信息的文件,每行包括学生的姓名、年龄和成绩,你可以使用awk来提取其中的某些字段:

[root@localhost ~]# awk '{print $1, $3}' students.txt

解释:这个命令将打印出每行中的第一个和第三个字段(即姓名和成绩)。

举例2: 进行计算
   你可以使用awk来对文本文件中的数据进行计算。

假设你有一个包含数字的文件,你可以使用awk来计算它们的总和

[root@localhost ~]# awk '{sum += $1} END {print "Total: ", sum}' numbers.txt

解释:这个命令将计算文件中所有数字的总和,并打印出结果。

举例3: 过滤数据
   你可以使用awk来过滤文本文件中的数据,只输出符合条件的行或字段。

比如,你可以只输出成绩大于80分的学生信息

[root@localhost ~]#  awk '$3 > 80 {print $1, $3}' students.txt
 
解释:这个命令将只输出成绩大于80分的学生的姓名和成绩。

  • 22
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答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是我们在文本处理工作中不可或缺的三个工具,不同的工具可以用于处理不同的文本操作,也可以用于搭配使用,以完成更加复杂的文本处理工作。对于需要经常处理文本的人员来说,掌握这些工具是非常必要的。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值