awk---grep----sed

本文介绍了Linux系统中用于处理行的三个重要命令:awk、grep和sed。awk通过模式匹配执行指定动作,例如打印特定字段。grep用于搜索匹配特定模式的行,支持行编号计数、忽略大小写等选项。sed则是一个行编辑器,能进行删除、替换、添加等操作。文中给出了多个实例来展示这三个命令的用法。
摘要由CSDN通过智能技术生成

网上整理的linux下一些处理行的3个命令

1.基本程序结构

awk 程序是由若干个“模式”与“动作”所组成的,其执行方式是针对文件中的每一行(line)搜索指定的模式 (patterns),当一行中有符合指定的模式,awk 就会在此一行执行被指定的动作(actions)。 awk 依此方式处理输入文件的每一行直到输入文件结束。

“动作”一般写在大括号 “{ }” 里面,一个模式后面就跟着一个动作,一个动作可以是一条或多条语句。整个 awk 程式就象下面的形式:

awk ‘ 模式 { 动作 }

.................

模式 { 动作 }’ filename

这种形式是从filename文件中读入数据

或者

`命令|awk ‘模式 { 动作 }

..............

模式 { 动作 }`

是通过管道将命令的输出传递给awk语句。

 

例:awk ‘$1=”127.0.0.1” { print $2}’/etc/hosts #从/etc/hosts中读入数据

而:cat /etc/hosts| awk‘$1=”127.0.0.1” { print $2 }’ #则是接收cat /etc/hosts的结果

两个例子都是将/etc/hosts文件中所有第一个字段为127.0.0.1的行的第二个字段打印出来。

其运行结果为:localhost

在 awk 中,“模式”或“动作”能够被省略,但通常是省略模式。模式被省略后,对于输入文件里面的每一行,动作都会被执行。而如果“动作”被省略,awk语句只会去寻找你所指定的模式,但即使找到了也不执行其它任何操作(因为没有指定动作),就象在Unix系统中你用find命令去寻找一个文件,但是没有用 –print 参数来说明要显示一样,find只是找到了这个文件,但并不显示出来。

如:awk ‘{ print $2 }’ /etc/hosts

的含义为:从/etc/hosts文件中读入数据,将每个记录(行)的第二个字段打印出来

结果为:localhost

peixun1

而:awk ‘$1=”127.0.0.1”’ /etc/hosts

只是在/etc/hosts文件中寻找,看看哪一行的第一个字段为127.0.0.1,不管找到与否,一概不显示。

所以结果是:什么都没有

2.如何执行awk语句

基本上,有三种方法可以执行awk语句。

1) 如果 awk 程序很短,则 awk 可以直接写在命令行上(command line),如下

所示:

#awk'program' input-file1 input-file2 ...

其中 program 包括一些模式和动作,就象前面的例子一样。input-file1input-file2 ...为数据文件名,程序将从中读取数据。文件名可以多于一个,当同时存在多个文件名时,程序将顺序处理这些文件。

2) 如果 awk 语句较长,较为方便也是通常的做法是将整个 awk语句存放在一个文本文件中,通过文件名来执行这段程序。

如一个awk命令的所有语句都放在了一个叫mypro的文件中,那么可以通过下面的方式来执行:#shmypro

3)也可以只将 'program' 部分即“模式与动作”部分写在文件中,通过以下的方式执行:

#awk -fprogram-file1 -f program-file2 ...input-file1 input-file2 ...

其中,program-file1 ,program-file2是存放“模式与动作”的文件名称,他通过 -f 参数被调用,命令文件的个数也可以有多个,在使用时,每个文件名前面都必须要有-f 参数。

如:文件file1的内容为:‘{ print$1,$2,$3 }’

file2为:‘{ print $2,$3,$4 }’

file3为: I am a student

file4为: You are a teacher

则:执行 awk -f ./file1 -f ./file2./file3 ./file4

的结果为:I am a

am astudent

You area

are astudent

我们建议使用第二种方法,简单而又方便。

也就是:

调用awk

有三种方式调用a wk,

第一种是命令行方式,如:

awk –F :‘commands’ i

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用和引用的内容,可以知道awk是一种用于文本处理和报表生成的编程语言,它可以通过一系列命令和模式来操作数据。在上述引用中,可以看到awk命令通过-F参数指定分隔符,在BEGIN和END语句块中执行特定的操作。其中,awk -F "." '{print $1}' /proc/uptime可以获取系统上次重启的时间。而date命令结合awk命令可以进行日期的格式转换。例如,date -d "$(date -d"1 month" "8Y*m01") -3 day" "8Y8m号d"可以获取当月倒数第三天的日期。所以,date %F | awk -F可以是一种结合awk命令对日期进行格式化的操作。但是,由于你没有提供完整的命令内容,无法给出具体的解释。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [使用AWK在shell中生成日历小程序](https://download.csdn.net/download/weixin_38612139/14014761)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [shell脚本详解之awk文本和数据处理编程语言](https://blog.csdn.net/weixin_47062656/article/details/122344138)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [linux sed,awk 管道组合命令解析 (e.g. netstat -anp | grep 8099| grep -v grep | awk '{print $7}' |......](https://blog.csdn.net/michaelgo/article/details/79854912)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值