美文网首页
文件格式化相关处理AWK

文件格式化相关处理AWK

作者: 蓝山_d851 | 来源:发表于2020-11-09 10:32 被阅读0次

awk:一行中分成数个字段来处理,适合处理小型的数据处理。

运作模式

awk '条件类型1{动作1} 条件类型2{动作2}...'filename

默认的分隔符号是空格 和Tab键
举例:

[root@test001 tmp]# last    -n  5
root     pts/2        114.85.202.207   Wed Nov  4 11:04   still logged in   
root     pts/1        114.85.202.207   Wed Nov  4 10:28   still logged in   
root     pts/1        114.85.202.207   Wed Nov  4 10:07 - 10:28  (00:20)    
root     pts/3        114.85.202.207   Tue Nov  3 15:02 - 17:48  (02:46)    
root     pts/2        114.85.202.207   Tue Nov  3 14:37 - 16:54  (02:16)    

wtmp begins Tue Apr  7 10:19:30 2020
取出近期登录的前5条信息

取出登入者的账号和IP中间用tab隔开

[root@test001 tmp]# last    -n  5   |  awk   '{print $1 "\t" $3}'
root    114.85.202.207
root    114.85.202.207
root    114.85.202.207
root    114.85.202.207
root    114.85.202.207
    
wtmp    Tue

awk的处理流程

  1. 读入第一行,并将第一行的资料填入0,1,$2..等等变量中;
  2. 依据条件限制来判断是否进行后面的动作
  3. 做完所有条件类型和动作
    4.若还有后续的行数据,则重复上面1-3的步骤,直到所有数据都读取完。

awk的内建函数

NF 每一行($0)拥有的字段总数
NR 目前awk处理的是”第几行“数据
FS 目前的分隔符,默认是空格键。
例子:
使用 last -n 5 命令来练习,如我们想要:

  • 列出每一行的账号($1)
  • 列出目前处理的行数(awk内的变量NR)
  • 并且说明改行有多少字段(awk内的NF变量)
[root@test001 ~]# last  -n  5
root     pts/1        218.80.192.233   Wed Nov  4 14:33   still logged in   
root     pts/2        114.85.202.207   Wed Nov  4 11:04 - 14:01  (02:57)    
root     pts/1        114.85.202.207   Wed Nov  4 10:28 - 13:07  (02:39)    
root     pts/1        114.85.202.207   Wed Nov  4 10:07 - 10:28  (00:20)    
root     pts/3        114.85.202.207   Tue Nov  3 15:02 - 17:48  (02:46)
[root@test001 ~]# last  -n  5  | awk '{print $1 "\t lines:" NR "\t columns:" NF}'
root     lines:1(行数)     columns:10(该行字段数)
root     lines:2             columns:10
root     lines:3             columns:10
root     lines:4             columns:10
root     lines:5             columns:10
         lines:6             columns:0
wtmp     lines:7             columns:7

awk的逻辑运算字符

">" 大于
"<" 小于
">=" 大于等于
"<=" 小于等于
"==" 等于
"!=" 不等于

例子

查阅该文件中的第一和第三字段列,并且第三栏小于10以下的数据。只显示第一和第三栏

[root@test001 ~]# cat /etc/passwd   | awk  -F:  '$3<10 {print $1  "\t" $3}'
root            0
bin             1
daemon          2
adm             3
lp              4
sync            5
shutdown        6
halt            7
mail            8

''
计算每个人的总额 并打印标准输出
第一行只是说明,所以第一行不加总只是(NR==1 时处理)
第二行以后会出现加总的情况(NR>=2)

[root@test001 ~]#  cat printf.txt   |  awk 'NR==1{printf "%10s %10s %10s %10s %10s\n",$1,$2,$3,$4,"Total"} NR>=2{total = $2 + $3 + $4;printf "%10s %10d %10d %10d %10.2f\n",$1,$2,$3,$4,total}'
      Name    Chinese    English       Mash      Total
    DmTsai         80         60         92     232.00
     VBird         75         55         80     210.00
       Ken         60         90         70     220.00
                    0          0          0       0.00  

相关文章

  • 文件格式化相关处理AWK

    awk:一行中分成数个字段来处理,适合处理小型的数据处理。 运作模式 默认的分隔符号是空格 和Tab键举例: 取出...

  • 非原创,转载处未知...

    awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信...

  • 浅析AWK命令

    awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信...

  • linux命令大全——awk行处理器

    awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信...

  • shell -- AWK&文本处理 浅析

    markdown 编辑,来写awk真是麻烦awk 入门:awk 是格式化文本处理最常用的工具,日常捞数据、切数据最...

  • awk

    awk:报告生成器,格式化文本输出 内容: awk介绍 awk基本用法 awk变量 awk格式化 awk操作符 a...

  • Linux三剑客(awk-1)-awk命令基础

    序: awk是一个报告生成器,拥有强大的文本格式化能力。 awk更适合格式化文本,对文本进行复杂格式处理。 1. ...

  • AWK 使用总结

    原文地址 awk 是处理文本的工具,Mac 自带这个程序。 适合文本比较复杂的格式化数据。 基本语法 awk 会一...

  • Linux 笔试面试常用命令

    awk、top、netstat、grep、less、more、tail。 awk:awk是一种处理文本文件的语言,...

  • sed awk 用法示例

    sed 的主要作用是替换,awk 作用是格式化输出 样本文件 命令 输出

网友评论

      本文标题:文件格式化相关处理AWK

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