美文网首页
三剑客之awk基础使用

三剑客之awk基础使用

作者: uangianlap | 来源:发表于2016-10-10 22:40 被阅读38次
AWK

awk: 又称gawk,以Aho Kernighan Weinberger 3位作者首字母命名的UNIX平台上的强大编辑工具.其原理(处理文件时)是依次(循环遍历一遍)读取文件的每行,一次读取一行,按照分隔符(如果文件是有固定格式的)进行切片或其它处理工作.

用法格式: awk [Options] 'Patterns{Actions Statements}' File1 File2 ...,各段说明如下:

Options:awk命令的选项

-F: 指定对每行处理的分隔符.然后就可以用($0,$1,$2,...)依次取出各列,其中$0指代整行内容.
-v varname: *声明自定义变量 *
示例--> awk -v word="Hello awk!" 'BEGIN{print word}'

Patterns: 匹配模式

BEGIN/END: 特殊模式,仅在awk命令执行前或执行后运行一次.
expression: 表达式,其值非0或为非空字符时满足条件,如$1~/foo/ 或 $1=="ShenZhen"
示例--> awk -F: '$3==0,$7~"nologin"BEGIN{print "username:%10s,userid:%5s,usershell:%20s",$1,$3,$7}' /etc/passwd
/RegularExpression/: 正则表达式
示例--> awk -F: '/^/{print $1,$3}' /etc/passwd

Actions: 处理动作

1.print --> '{print $1, $4}'
2.printf:格式化输出,用法类似C语言里的printf,需要结合各格式化字符才能更加美观地显示输出(不会自动换行)

format格式符 作用
%c 显示字符的ASCII码
%d, %i 十进制
%e, %E 科学计数法显示数值
%f 显示浮点数
%g, %G 以科学计数法的格式或浮点数的格式显示数值.
%s 显示字符串
%u 无符号整数
%% 显示%自身
修饰符 -----
N 显示宽度
- 左对齐
+ 显示数值符号

示例--> awk -F: '{printf "%-15s %i\n", $1, $3}' /etc/passwd

Statements: 脚本语句
        if (condition) statement [ else statement ]
            示例--> awk -F: '{if ($1=="root") print $1, "Admin"; else print $1, "Common User"}' /etc/passwd
        while (condition) statement:对每行内容进行循环处理
            示例-->awk -F: '{i=1;while(i<=3){print $i;i++}}' /etc/passwd
        do statement while (condition)
        for (expr1; expr2; expr3) statement
        for (var in array) statement
            示例-->awk -F: '$NF !~ /^$/{BASH[$NF]++}END{for(A in BASH){printf "%15s:%i\n", A,BASh[A]}}' /etc/passwd
        break
        continue
        delete array[index]
        delete array
        exit [ expression ]
        { statements }
        switch (expression) {
        case value|regex : statement
        ...
        [ default: statement ]
        }
awk内置变量:
变量名 含义
FS Field Separator,(输入)文本文件时所使用的字段分隔符 默认是空白字符
OFS Output Field Separator,输出分隔符,可以自定义各种.示例--> awk 'BEGIN{OFS="++"}{print $1,$2,$3}' test.txt
RS Record Separator,(输入)文本信息所使用换行符
ORS Output Record Separator,输出的换行符
NR Num of Record,行数
FNR 用于记录正处理的行是当前这一文件中被总共处理的行数,而NR记录的行数是所有处理的文件的 总数.
NF Num of Field,当前正在处理的行的列数.示例: awk '{print NF}' a.py # a.py这个文件的各列的列数不确定,所以输出的数字是不一样的.
FILENAME 当前处理的文件文件名.
awk的操作符(与其它语言如Python shell等非常类似):
    -x: 负值
    +x: 转换为数值
    x^y: 与运算
    x**y: x的y次方
    x[+|-|*|/]y: 加减乘除法
    = += -= ...
    ++ --
    x<y x>y x<=y x!=y x==y x~y(x能被y模式所匹配) x!~y
    x&&y x||y
    selector?if-true-exp:if-false-exp
awk函数: function_name(para1, para2)

三剑客之grep基础使用
三剑客之sed基础使用

相关文章

  • Linux-grep、sed、awk之awk命令

    参考:Linux三剑客(grep sed awk) 之 awk[https://www.jianshu.com/p...

  • Day19操作系统三剑客命令-awk

    01.三剑客awk命令概念介绍、* 02.三剑客awk命令使用方法 print:输出指定的信息gusb : 替换指...

  • 三剑客之awk基础使用

    awk: 又称gawk,以Aho Kernighan Weinberger 3位作者首字母命名的UNIX平台上的强...

  • 文本三剑客awk

    文本处理三剑客3-Awk awk的用户使用指南[http://www.gnu.org/software/gawk/...

  • day 15

    Linux三剑客之awk 1.1、awk语法及参数 功能说明: awk是一种编程语言,可以用来处理数据和生成报...

  • 2019-07-25

    操作系统命令三剑客-awk 一: 三剑客命令awk概述gawk : pattern scanning and pr...

  • Linux三剑客grep sed awk的区别

    目录 [TOC] Linux三剑客grep sed awk的区别 首先了解下三剑客的使用范围grep:普通搜索,主...

  • 2019-06-19

    1. awk三剑客命令概述 # which awk--------查看awk在哪个目录下 显示: /u...

  • day19-三剑客awk

    ※三剑客之awk 下图是awk的执行过程 1.取行------>NR== 2.取列------->1第一列2第二列...

  • Shell编程、part5

    本节内容 1. 三剑客简介 2. sed命令详解 3. awk命令详解 文本处理三剑客 在 Shell 下使用这些...

网友评论

      本文标题:三剑客之awk基础使用

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