使用得当,awk可以胜任一切文本处理!(升级版)

使用得当,awk可以胜任一切文本处理!(升级版)

首页角色扮演剑指天涯更新时间:2024-04-30

条件操作符

  1. 匹配

    awk -F : '{if($1~/root/) print}' /etc/passwd

    分析:if($1~/roo/t) 表示如果 file 中包含 root,打印他

  2. 精确匹配

    使用符号==

    awk -F: '{if($3==0) print}' /etc/passwd

  3. 不匹配

    !~

    awk -F: '{if($1!~/linuxone/) print}' /etc/passwd

    精确不匹配

    !=

    awk -F: '{if($1!=/linuxone/) print}' /etc/passwd

  4. 小于

    <

  5. 小于等于

    <=

  6. 大于

  7. 设置大小写

    awk ‘/[Rr]oot’ /etc/passwd

  8. 任意字符

    awk -F : '{f($1~/^...t/) print}' /etc/passwd

    分析:if($1~/^...t/)表示第四个字母是 t

  9. 或关系匹配

    awk -F : '{if($1~/(squid|nagios)/) print}' /etc/passwd

  10. 行首

    awk '/^root/' /etc/passwd

    分析:^root(行首包含 root)

  11. AND &&

    awk -F : '{if($1=="root"&&$3=="0") print}' /etc/passwd

  12. OR ||


内置变量:

变量名

含义

ARCC

命令行参数个数

ARGV

命令行参数列表

ENV |RON

支持队列中的系统环境变量的使用

FNR

浏览文件的记录数

FS

置顶分隔符,等价于-F

NF

浏览记录的域的个数

NR

一度的记录数

OFS

输出域分隔符

ORS

输出记录分隔符

RS

控制记录分隔符

案例:

打印有多少行记录

awk 'END{print NR}' /etc/passwd

设置输入域到变量名

awk -F : '{name=$1;path=$7; if(name~/root/)print name"\tpath is : " path}' /etc/passwd

域值比较操作

awk '{if($6<$7) print $0}' input-file

修改文本域只显示修改的记录

awk -F : '{if($1=="root"){$1="nagios server" ; print}}' /etc/passwd

文件长度相加

ls -l | awk '/^[^d]/ {print $9"\t" $5}{tot =$5}\ END {print "total kb:"tot}'

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved