学习shell必会的三剑客详解

本文介绍了Linux/UNIX系统中常用的文本处理工具grep、sed和awk,详细解释了这些工具的基本用法及应用场景,包括文本搜索、数据处理和脚本编写等。

Shell编程三剑客

在Linux/UNIX系统中包含很多文本处理器或文本编辑器,其中grep、sed和awk是shell编程中经常用到的文本处理工具,因此,被业内的人广泛的称之为“shell编程三剑客”。

grep命令工具

grep 命令 :强大的文本’搜索’工具

  1.grep   -n   'word'  yang.txt

在file_name文件中找到word所在的所有行并显示。-n 为显示行号。

[root@localhost ~]# grep -n "the" yang.txt 
1:the  zhe is
5:the

在yang.txt文件中找到wall 或者是well 所在的所有行并显示

[root@localhost ~]# grep -n "w[ea]ll" yang.txt 
2:wall
5:well

文件中找到”非well” 所在的所有行并显示

[root@localhost ~]# grep -n "w[^e]ll" yang.txt 
2:wall

文件中找到以The开头的所有行并显示

[root@localhost ~]# grep -n "^the" yang.txt 
1:the  zhe is
7:the

文件中找到goo(任意字符)(任意字符)le的所有行并显示(即总共七个字符)

[root@localhost ~]# grep -n "goo..le" yang.txt 
2:wall gggggggggoohtle
4:sfk goooole
7:the  goohtle

文件中找到g , gg , ggg等的所有行并显示(*代表重复前一个字符0~~无穷多次)

[root@localhost ~]# grep -n "g*g" yang.txt 
2:wall gggggggggoohtle
3:this is goole fjslk
4:sfk goooole
7:the  goohtle

sed命令工具

sed是一个强大而简单的文本解析转换工具,可以读取文本,并根据指定的条件对文本内容进行编辑,最后输出所有行活仅输出处理的某些行,sed可以在无交互的情况下实现相当复杂的文本处理操作。被广泛的应用于shell脚本中,用于完成各种自动化处理任务。

sed的工作流程主要包括:
1. 读取:sed从输入流中读取一行内容不能够存储到临时的缓冲区中;
2. 执行:默认情况下所有的sed命令都在模式空间中按顺序地执行,除非指定了行的地址,否则sed命令将会再所有行上依次执行;
3. 显示:发送修改后的内容到输出流,再发送数据后,模式空间将会被清空。
注意:在所有的文件内容都被处理完成之前,上述过程将重复执行,直至所有内容都被处理完

sed :实现数据的替换,删除,增加,选取等(以行为单位进行处理)

删除file_name文件的2到4行

 1.sed    '2,4d'    file_name

[root@localhost ~]# nl yang.txt | sed '2a liu …>shanghia ’

在这里插入图片描述

awk 命令工具

awk : 以字段为单位进行处理(其实就是把一行的数据分割,然后进行处理)

先介绍一些关于awk的用法:

 1.$0   代表一整行的数据
 2.$1   代表第一个字段,用人的话来说就是第一列的数据
 3.$2   以此类推
 4.NF   每一行拥有的字段总数
 5.NR   目前处理的是第几行的数据
 6.FS   目前的分隔字符
 7.命令格式 :awk   '条件{命令1} 条件{命令2}...'   file_name

具体命令:

把file_name 文件中的前五行的第一列,第二列的数据列出来 (以[tab]或空格键分隔)

  1. awk      'NR<6{print   $1  "\t"  $2 }'     file_name  
[root@localhost ~]# awk 'NR<6{print $1 $2}' yang.txt 
thezhe
wallgggggggggoohtle
thisis
sfkgoooole
well


  2.像\n ,\t,这种符号应该用双引号括起来 
  3.NR,NF等变量要用大写,并且不需要 $ 

三剑客命令总结:

-记住三个命令的运用形式
     grep    '字符'       文件
     sed     '命令'       文件
     awk    '条件{命令}'   文件
-死记一点,单引号内就是正则表达式的用法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值