【linux命令之awk】

作者: 卿卿木子七 | 来源:发表于2019-07-22 16:46 被阅读3次

AWK是一种处理文本文件的语言,是一个强大的文本分析工具,稍候会有grep和sed命令的使用。

awk、grep、sed是linux操作文本的三大利器,合称文本三剑客,也是必须掌握的linux命令之一。三者的功能都是处理文本,但侧重点各不相同,其中属awk功能最强大,但也最复杂。grep更适合单纯的查找或匹配文本,sed更适合编辑匹配到的文本,awk更适合格式化文本,对文本进行较复杂格式处理。

log.txt文本内容如下:

2 this is a test
3 Are you like awk
This's a test
10 There are orange,apple,mongo

1. 用法一

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

# 每行按空格或TAB分割,输出文本中的1、4项
 $ awk '{print $1,$4}' log.txt
 ---------------------------------------------
 2 a
 3 like
 This's
 10 orange,apple,mongo
 # 格式化输出
 $ awk '{printf "%-8s %-10s\n",$1,$4}' log.txt
 ---------------------------------------------
 2        a
 3        like
 This's
 10       orange,apple,mongo
2. 用法二

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

# 使用","分割
 $  awk -F, '{print $1,$2}'   log.txt
 ---------------------------------------------
 2 this is a test
 3 Are you like awk
 This's a test
 10 There are orange apple
 # 或者使用内建变量
 $ awk 'BEGIN{FS=","} {print $1,$2}'     log.txt
 ---------------------------------------------
 2 this is a test
 3 Are you like awk
 This's a test
 10 There are orange apple
 # 使用多个分隔符.先使用空格分割,然后对分割结果再使用","分割
 $ awk -F '[ ,]'  '{print $1,$2,$5}'   log.txt
 ---------------------------------------------
 2 this test
 3 Are awk
 This's a
 10 There apple
3. 用法三

awk -v #设置变量

$ awk -va=1 '{print $1,$1+a}' log.txt
 ---------------------------------------------
 2 3
 3 4
 This's 1
 10 11
 $ awk -va=1 -vb=s '{print $1,$1+a,$1b}' log.txt
 ---------------------------------------------
 2 3 2s
 3 4 3s
 This's 1 This'ss
 10 11 10s
4. 用法四

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

test.awk的内容如下:

#!/bin/awk -f
{print $1;}

$ awk -f cal.awk log.txt
 ---------------------------------------------
 2
 3
 This's
 10
4. 其他用法
#过滤第一列大于2的行
awk '$1>2' log.txt
#过滤第一列等于2的行,打印第一列和第三列
awk '$1==2 {print $1,$3}' log.txt
#过滤第一列大于2.第二列等于'Are',打印第一、二、三列
awk '$1>2 && $2=="Are" {print $1,$2,$3}' log.txt
#从文件中找出长度大于10的行
awk 'length>10' log.txt
#打印九九乘法表
seq 9 | sed 'H;g' | awk -v RS='' '{for(i=1;i<=NF;i++)printf("%dx%d=%d%s", i, NR, i*NR, i==NR?"\n":"\t")}'

相关文章

  • Linux

    linux awk命令详解、linux awk命令Linux常用操作指令Linux netstat命令详解 awk...

  • Linux命令学习之:awk命令

    Linux命令学习之:awk命令 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk...

  • awk命令

    下文来自:美团 吴孟达更多AWK命令请参考:Linux awk 命令扩展:linux sort,uniq,cut,...

  • Linux | awk

    参考:http://www.runoob.com/linux/linux-comm-awk.html awk命令的...

  • Linux 学习笔记(十四):Linux 正则表达式基础

    grep 命令 作为linux中最为常用的三大文本(awk(Linux awk教程),sed(Linux sed教...

  • Linux的awk命令

    Linux的awk命令 众所周知awk命令是Linux一个非常重要又难以掌握的命令,下面对这个命令进行一个详细的说...

  • Linux 命令之 awk

    AWK 是一种优良的语言级的文本处理工具,是 Linux 环境中现有的功能最强大的数据处理引擎之一。其名称得自于它...

  • Linux命令之awk

    awk中使用shell命令awk '{cmd="rm "$0;system(cmd)}' filename.txt...

  • Linux命令之 awk

    本文主要介绍awk的入门,以及一些对应的小练习。 以如下文本进行练习: I、基本输出 awk '{[pattern...

  • Linux 命令之awk

    awk使用教程: awk调用方式,常用三种 1.命令行调用(重点介绍) 常用格式框架: 说明:-F 指定分割符,...

网友评论

    本文标题:【linux命令之awk】

    本文链接:https://www.haomeiwen.com/subject/rgrclctx.html