4.2 awk命令详解及示例

awk可以说是liunx中很重要的一个命令,是处理文本文件的一个神器,几乎所有的liunx中都会自带。

它会对文本文件进行一行一行的处理,特别适合格式相同文本,下面我们先了解一下它的语法,然后在弄一小段日志,看看它的具体用法。

命令

awk 动作 文件名

示例

awk  '{print $0}'  xxzhuti.logs

这个例子中 xxzhuti.logs 是要处理的文件文件,print 是打印的动作,$0代表一整行,需要将此命令,放在大括号中,并用引号,引起来。

当然有 $0 就会有 $1,$2, $3 依次代表的是第一个字段,第二个字段,第三个字段,在awk中默认是用空格和制表符,将字符串划分开来。若是使用了别的字符划分,如 竖线“|”,那么我们需要用 -F 规定一下划分的字符,如下。

awk -F  "|"  "{print $1}" xxzhuti.logs

变量

awk中的变量我们用的最多的也就是NFNF代表的是有多少个字段。

awk "{print $NF}" 显示最后一个字段

$(NF-1) 显示倒数第二个字段。

awk常用的变量

FILENAME:当前文件名
FS:字段分隔符,默认是空格和制表符。
RS:行分隔符,用于分割每一行,默认是换行符。
OFS:输出字段的分隔符,用于打印时分隔字段,默认为空格。
ORS:输出记录的分隔符,用于打印时分隔记录,默认为换行符。
OFMT:数字输出的格式,默认为%.6g。

函数

awk中还内置了一些函数,方便我们对数据进行处理

awk "{ print toupper($1) }"  xxzhuti.logs

awk常用函数

tolower():字符转为小写。
length():返回字符串长度。
substr():返回子字符串。
sin():正弦。
cos():余弦。
sqrt():平方根。
rand():随机数。

条件

awk " 条件 动作 " xxzhuti.logs

awk ' $1==200  {print $3} ' xxzhuti.logs

if语句

awk ' { if($1>200) print $3; else print "xxzhuti.com" }'  xxzhuti.logs

记住最常用的,可以让工作效率事半功倍。

全部评论(0)

头像
😃 😁 😅 😂 😍 😜 😝 🤑 🥵 🥰 😙 😎 😵 😭 😱 😖 🥳 👽 🙈 🤡 😤 💣 💯 💢 ❤️ 👍 👏 👋 👌 🤏 🙏
还没有任何评论哟~
目录