浅谈awk

今天在工作的时候,我又一次碰到了那些年我们懵逼的awk,不得已硬着头皮又看了一次笔记,突然间却有种毛瑟顿开的感觉,所以今天我就来聊一聊那些年我们一脸懵逼的awk。

1.awk与gawk

首先毋庸置疑的是awk是一门语言。不过相信很多小伙伴也都听说过gawk,然后就更加的一脸懵逼了,这都是啥?在这里我要告诉小伙伴的是不要懵逼look

[[email protected] ~]# which awk
/bin/awk
[[email protected] ~]# ll /bin/awk
lrwxrwxrwx. 1 root root 4 Feb 28 12:15 /bin/awk -> gawk
看到了吧这个所谓的awk不过就是gawk的一个软连接而已啦。

2.awk的一些参数。

NF:对文件使用分隔符之后的列数。

NR:行号

RS:指定行的结尾

FS:指定行切割成列的分隔符。(其实就是我们平常用的-F)

OFS:指定切割后的链接符。

在这里我来举个例子说一下。

这里关于awk的匹配我个人总结了一个公式希望对大家有用。

这是要看要匹配的字符两边如果是一样的东西,那么就-F单个匹配那个一样东西,如果不一样,那么就需要多个匹配了,就是-F’[左边的右边的]’’{print}’比如匹配ip

inet addr:10.0.0.253  Bcast:10.0.0.255  Mask:255.255.255.0

10.0.0.253后面是空格,前面是:不一样那么就是


[[email protected] etc]#  ifconfig eth0 | awk -F ‘[ :]+‘ ‘NR==2{print $4}‘

10.0.0.253

这里nr表示第二行就是inet addr:10.0.0.253  Bcast:10.0.0.255  Mask:255.255.255.0

1).查看第一行(NR)在这里我指定了NR==1

[[email protected] etc]# cat passwd.bak
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
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
[[email protected] etc]# awk ‘NR==1{print}‘ passwd.bak
root:x:0:0:root:/root:/bin/bash
2).将passwd.bak的内容的分隔符从\n变为:

[[email protected] etc]# awk ‘BEGIN{RS=":"}{print NR,$0}‘ passwd.bak
1 root
2 x
3 0
4 0
5 root
6 /root
7 /bin/bash
bin
8 x
9 1
10 1
11 bin
12 /bin
13 /sbin/nologin
daemon
14 x
在这里我解答一下RS就是将分隔符变为":"然后我打印行号和所有行。

3.)在上面的添加了一个指定连接符
[[email protected] etc]# awk ‘BEGIN{RS=":";OFS="@"}{print NR,$0}‘ passwd.bak
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]/root
[email protected]/bin/bash
bin
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]/bin
[email protected]/sbin/nologin
daemon
[email protected]
[email protected]
这个就是我从上面的东西上添加了一个OFS=“@"然后从输出我们就能看出来行号文件的链接从" "变成了@。

3.关于一些特殊的模块

其实这个所谓的特殊模块我在这里也就只介绍两个BEGIN,END

其实BEGIN我在上面也有介绍过。

在这里我单独拿出来介绍一下用法把,“awk ‘{BEHIN{内置变量(上面介绍的NF等)类似于excl的抬头等.} {动作}}’”。

其实BEGIN他是在awk执行文件之前就运行的一些东西。所以awk在用BEGIN之后有些就不用加文件或输入了。

例子:

[[email protected] etc]# awk -F ‘[ :]+‘ ‘BEGIN{print "    name      ","ID"} $3~/^41/ { print $1$2,$3}‘ /server/files/reg.txt
    name       ID
ZhangDandan 41117397
LiuBingbing 41117483
2)END模块

当理解了BEGIN模块之后理解END模块就简单了很多。END模块是在文件执行结束之后才执行的。所以如果你有END那么你必须要有输入。(end模块其实里面基本添加的都是一些输出)

例子

awk ‘/^root/ {i++}END{print i}‘ /etc/passwd

比如这个(我前面加上一个匹配以root开头的passwd文件。如果有一个我就i+1,最后在end输出)。

时间: 2024-11-04 18:50:39

浅谈awk的相关文章

Linux的文本处理工具浅谈-awk sed grep

Linux的文本处理工具浅谈 awk   老大 [功能说明] 用于文本处理的语言(取行,过滤),支持正则 NR代表行数,$n取某一列,$NF最后一列 NR==20,NR==30 从20行到30行 FS竖着切,列的分隔符 RS横着切,行的分隔符 [语法格式] awk [–F] [“[分隔符]”] [’{print$1,$NF}’] [目标文件] awk 'BEGIN{FS="[列分隔符]+";RS="[行分隔符]+";print "-GEGIN-"

浅谈awk的基本用法

awk 1.域和记录: 取第一域,并在开头和结尾加字符begin和end 通常使用BEGIN来显示变量和预置变量,使用END来输出最终结果. awk  ' BEGIN  {print "being"}  {print $1}  END  {print "end"}'   file 2.条件操作符: 第一字域,包含expect,就打印整行 awk '{if($1~/expect/) print $0}' c.sh 或者 awk '$1~/expect/{print $

浅谈awk命令

简介 awk是一个强大的文本分析工具,相对于grep.sed命令,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,然后将每行切片,再对切开的部分进行处理. awk有3个不同版本: awk.nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本. awk其名称得自于它的创始人 Alfred Aho .Peter Weinberger 和 Brian Kernighan 姓氏的首个字母.实际上 AWK 拥有自己的语言: AWK 程

浅谈ELK日志分析平台

作者:珂珂链接:https://zhuanlan.zhihu.com/p/22104361来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 小编的话 "技术干货"系列文章意在分享技术牛人的知识干货,每期主题都不一样哟!期待各位读者在文后发表留言,来一场技术上的交流和思想上的碰撞! 2016年7月20日,本期品高云公开课由叶春草带来"可视化案发现场--浅谈ELK日志分析平台"的分享. 分享嘉宾 叶春草现就职于品高云软件技术支持工程师.就职

Linux特殊符号浅谈

Linux特殊字符浅谈 我们经常跟键盘上面那些特殊符号比如(?.!.~...)打交道,其实在Linux有其独特的含义,大致可以分为三类:Linux特殊符号.通配符.正则表达式. Linux特殊符号又可以分以下几类 1.管道符号 字符 名称 功能描述 | 管道 传递的普通的字符串,来自于前一个命令 |xargs 管道流转换 与xargs 传递的是把字符串变成了文件名 2.目录结构 字符 名称 功能描述 . 当前目录 .. 当前目录上一级目录 3.重定向符号 字符 名称 功能描述 > 输出重定向 会

转载-浅谈Ddos攻击攻击与防御

EMail: jianxin#80sec.comSite: http://www.80sec.comDate: 2011-2-10From: http://www.80sec.com/ [ 目录 ]一 背景二 应急响应三 常见ddos攻击及防御四 根源及反击五 总结 一 背景 在前几天,我们运营的某网站遭受了一次ddos攻击,我们的网站是一个公益性质的网站,为各个厂商和白帽子之间搭建一个平台以传递安全问题等信息,我们并不清楚因为什么原因会遭遇这种无耻的攻击.因为我们本身并不从事这种类型的攻击,这

.net中对象序列化技术浅谈

.net中对象序列化技术浅谈 2009-03-11 阅读2756评论2 序列化是将对象状态转换为可保持或传输的格式的过程.与序列化相对的是反序列化,它将流转换为对象.这两个过程结合起来,可以轻松地存储和传输数 据.例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象.反之,反序列化根据流重新构造对象.此外还可以将对象序列化后保存到本地,再次运行的时候可以从本地文件 中“恢复”对象到序列化之前的状态.在.net中有提供了几种序列化的方式:二进制序列化

浅谈——页面静态化

现在互联网发展越来越迅速,对网站的性能要求越来越高,也就是如何应对高并发量.像12306需要应付上亿人同时来抢票,淘宝双十一--所以,如何提高网站的性能,是做网站都需要考虑的. 首先网站性能优化的方面有很多:1,使用缓存,最传统的一级二级缓存:2,将服务和数据库分开,使用不同的服务器,分工更加明确,效率更加高:3,分布式,提供多台服务器,利用反向代理服务器nginx进行反向代理,将请求分散开来:4,数据库的读写分离,不同的数据库,将读操作和写操作分开,并实时同步即可:5,分布式缓存,使用memc

单页应用SEO浅谈

单页应用SEO浅谈 前言 单页应用(Single Page Application)越来越受web开发者欢迎,单页应用的体验可以模拟原生应用,一次开发,多端兼容.单页应用并不是一个全新发明的技术,而是随着互联网的发展,满足用户体验的一种综合技术. SEO 一直以来,搜索引擎优化(SEO)是开发者容易忽略的部分.SEO是针对搜索(Google.百度.雅虎搜索等)在技术细节上的优化,例如语义.搜索关键词与内容相关性.收录量.搜索排名等.SEO也是同行.市场竞争常用的的营销手段.Google.百度的搜