awk入门教程

linux中awk是一个强大的文本分析工具,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理

  1. awk空格等于把两个字段拼接起来
  2. " "表示中间是字符
  3. OFS默认是一个空格,将文本文件拼接到一起。当给某一列赋值时,会使OFS重新拼接文件
查看文件
awk '{print}' coin.txt

查看第一列
awk '{print $1}' coin.txt

查看文件前三列
awk '{print $1,$2,$3}' coin.txt

添加制表符 “\t” 使每列直接用tab隔开
awk '{print $1 "\t" $2 "\t" $3}' coin.txt

  1. NR代表文件每行的行数
  2. NF代表文件中每行有多少个字段个数
  3. “NR”=number of record
  4. “NF”=number of field
打印出文件中每列有多少个字段
awk '{print NF}' coin.txt

打印出文件中有多少行
awk '{print NR}' coin.txt 

打印前两列,并显示每列的行数
awk '{print NR "\t" $1 "\t" $2}' coin.txt

显示出文件所有内容,并打印出每行的行数
awk '{print NR, $0}' coin.txt    # $0表示输出coin.txt的所有内容,NR", " 表示行数与第一列以一个空格分隔

打印出文件内容并且输出每一行的字段个数
awk '{print NF "\t" $0}' coin.txt

第三列是1986就打印出来
awk '$3==1986 {print $0}' coin.txt

打印出第一列等于gold的信息
awk '$1=="gold" {print $0}' coin.txt    #字符串要使用双引号

打印出第7行
awk 'NR==7{print NR, $0}' coin.txt

打印出字段数为7的
awk 'NF==7{print NR, $0}' coin.txt

如果awl命令后边没有文件名的话,awk会等待你输入,然后再执行命令输出信息


Ctrl+C 退出
用FS自定义自己的分隔符,只会以逗号进行分割,就算字符中间有空格的话,依旧会以逗号分隔打印出来

用OFS定义输出分隔符

也看以同时把输入输出分隔符定义成一个符号,中间用分号隔开

可以同时打印两个文件
awk '{print NR,$0}' coin.txt 1.txt 

加FILENAME 打印出文件名
 awk '{print NR,FILENAME,$0}' coin.txt 1.txt 

可以选择文件内容进行赋值,比如把第三列输出成空格
awk '{$3=" ";print $0}' coin.txt

用NF打印出每列最后一个字段
awk '{print $NF}' coin.txt    #NF代表每列有多少个字段,所以直接打印NF就可以

打印每列倒数第二个同理
awk '{print $(NF-1)}' coin.txt

正则表达式
/ /
编辑一个test文件,打印出”abc“

awk '/abc/{print $0}' test.txt

/a.b/ 点在这里表示a和b之间任意一个字符
awk '/a.c/{print $0}'

/a.c/ " \ "是转译字符,只打印出a.c, 匹配其他特殊字符时同理


^和$ ^表示所匹配字符串要在字段最前面,$表示所匹配字符串在字段最后
awk '/^777/{print $0}'
awk '/777$/{print $0}


/a[xzy]b/ 表示可以匹配a和b中间[]里的xzy中任意一个字符
awk '/a[xzy]c/{print $0}'

/a[a-z]b/同理,匹配[]中a和z直接任意一个字符
awk '/a[a-z]c/{print $0}'

awk '/a[a-zA-Z]c/{print $0}'    #a到z A到Z中间任意一个字符

^如果在[]里表示不是的意思
[^]
awk '/a[^a-z]c/ {print $0}'    #小写a到z不匹配

* 和 + ?
  1. *表示0次或多次
    比如:
    /a*b/
    可以匹配到
    “ab”
    “aab”
    “aaab”
    “b”

  2. +表示最少1次
    比如:
    /a+b/
    可以匹配到
    “ab”
    “aab”
    不能匹配到
    “b”

  3. ?表示是或否
    比如:
    /a?b/
    只能匹配到
    “b”
    “ab”

{} 可以规定匹配到的次数
awk '/ab{2}c/ {print $0}'    #{2}表示只可以出现2个b

也可以扩展{2,3}
awk '/ab{2,3}c/ {print $0}'    #表示b可以出现2次到3次

/ab{2,}c/ 表示最少出现2个b。

()表示把()里的变成一个整体

比如/(ab)+c/

awk '/(ab)+c/ {print $0}'

欢迎加入

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值