linux三剑客grep、awk、sed

grep:更适合单纯的查找或匹配文本

sed:更适合编辑文本

awk:更适合格式化文本,对文本进行较复杂格式处理

1、grep

Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。

grep --help

[options]主要参数:

-c:只输出匹配行的计数

-i:不区分大小写

-h:查询多文件时不显示文件名

-l:查询多文件时只输出包含匹配字符的文件名

-n:显示匹配行及行号

-s:不显示不存在或无匹配文本的错误信息

-v:显示不包含匹配文本的所有行

--color=auto:可以将找打的关键词部分加上颜色的显示

pattern正则表达式主要参数:

\:忽略正则表达式中特殊字符的原有含义

^:匹配正则表达式的开始行

$:匹配正则表达式的结束行

\<:从匹配正则表达式的行开始

\>:到匹配正则表达式的行结束

[]:单个字符,如[A]即A符合要求

[-]:范围,如[A-Z],即A、B、C一直到Z都符合要求

.:所有的单个字符

*:有字符,长度可以为0

grep命令使用简单实例

grep 'test' d*         显示所有以d开头的文件中包含test的行

grep 'test' aa bb cc     显示在aa、bb、cc 文件中匹配test的行

grep '[a-z]\{5\}' aa     显示所有包含每个字符串至少有5个连续小写字符的字符串的行

grep命令使用复杂实例

明确要求搜索子目录:grep -r

忽略子目录:grep -d skip

如果有很多输出时,可以通过管道将其转到'less'上阅读:

grep magic/usr/src/Linux/Documentation/* | less

2、sed

Linux sed 命令是利用脚本来处理文本文件

sed 可依照脚本的指令来处理、编辑文本文件

sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等

动作说明:

a:新增,a的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)

c:取代,c的后面可以接字串,这些字串可以取代n1,n2之间的行

d:删除,因为是删除,所以d后面通常不接任何咚咚

i:插入,i的后面可以接字串,而这些字串会在新的一行出现(目前的上一行)

p:打印,将某个选择的数据印出。通常p会与参数sed -n一起运行

s:取代,可以直接进行取代工作,通常这个s的动作可以搭配正规表示法!例如,1,20s/old/new/g

注意:sed -e是修改输出终端,sed -i才是在源文件修改!!!

操作实例:

在testfile文件的第四行后添加一行,并将结果输出到标准输出,在命令行提示符下输出如下命令:

sed -e 4a\newLine testfile

首先vim testfile文件 输入内容:

在第二行前添加drink tea:

nl命令在linux系统中用来计算文件中行号

将第2-5行的内容取代成为No 2-5 number:

sed -s 替换

把 is 换成 are :

sed -d  删除

删除头三行:

删除包含nux的行:

删除所有空白行:

sed -n

显示2-4行:

3、awk

awk是一种处理文本文件的语言,是一个强大的文本分析工具。

基本用法

首先vim log.txt文件 输入内容:

用法一:

awk '{[pattern] action}' {filenames}  #行匹配语句awk 只能用单引号

实例:

每行按空格或TAB分割,输出文本中的1、4项

从文件中找出长度大于8的行

用法二:

awk -F   # -F 相当于内置变量FS,指定分割字符

实例:

使用","分割

使用多个分隔符。先使用空格分割,然后对分割结果在使用","分割

用法三:

awk -v   # 设置变量

实例:

设置变量a,并赋值=1,打印第一列和第一列加变量a的值

设置两个变量a=1和b=2,并赋值打印第一列,第一列+a,第一列+b的值

用法四:

awk -f {awk 脚本} {文件名}

实例:

awk -f cal.awk log.txt        其中,cal.awk为awk脚本文件

练习:

过滤第一列大于2的行

过滤第一列等于2的行

使用正则,字符串匹配:

输出第二列包含‘th’,并打印第二列与第四列

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值