awk使用

    xiaoxiao2021-03-25  119

    awk使用

    首先建立文本log.txt:

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

    A. 每行按空格或TAB分割,输出文本中的1、4项, 例如:awk '{print $1,$4}' log.txt

    $ awk '{print $1,$4}' log.txt 2 a 3 like This's 10 orange,apple,mongo

    B. 使用”,”分割,例如:awk -F, '{print $1,$2}' log.txt

    $ 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

    C. 使用多个分隔符.先使用空格分割,然后对分割结果再使用”,”分割. 例如:awk -F '[ ,]' '{print $1,$2,$5}' log.txt

    $ awk -F '[ ,]' '{print $1,$2,$5}' log.txt 2 this test 3 Are awk This's a 10 There apple

    D. 使用awk -v设置变量a=1, 例如:awk -v a=1 '{print $1,$1+a}' log.txt

    $ awk -v a=1 '{print $1,$1+a}' log.txt 2 3 3 4 This's 1 10 11

    E. 使用脚本,例如:awk -f cal.awk log.txt

    F. awk使用运算符

    1) 过滤第一例大于2的行. 例如:awk '$1>2' log.txt

    2) 过滤第一列大于2并且第二列等于’Are’的行. 例如:awk '$1>2 && $2=="Are" {print $1,$2,$3}' log.txt

    G. awk正使用则表达式

    注意:~ 表示模式开始。// 中是模式。

    例子:

    # 输出第二列包含 "th",并打印第二列与第四列 $ awk '$2 ~ /th/ {print $2,$4}' log.txt --------------------------------------------- this a # 输出包含"re" 的行 $ awk '/re/ ' log.txt --------------------------------------------- 3 Are you like awk 10 There are orange,apple,mongo # 忽略大小写 $ awk 'BEGIN{IGNORECASE=1} /this/' log.txt --------------------------------------------- 2 this is a test This's a test

    H. awk脚本

    BEGIN{ 这里面放的是执行前的语句 }

    END {这里面放的是处理完所有的行后要执行的语句 }

    {这里面放的是处理每一行时要执行的语句}

    例如cal.awk内容如下:

    #!/bin/awk -f #运行前 BEGIN { math = 0 english = 0 computer = 0 printf "NAME NO. MATH ENGLISH COMPUTER TOTAL\n" printf "---------------------------------------------\n" } #运行中 { math+=$3 english+=$4 computer+=$5 printf "%-6s %-6s M
    转载请注明原文地址: https://ju.6miu.com/read-10511.html

    最新回复(0)