zoukankan      html  css  js  c++  java
  • 风情万种awk

    awk是基于列的文本处理工具,所有的文件都是由单词和各种空白字符组成。这里"空白字符"包括空格、tab以及连续的空格和tab,每个非空白的部分叫做"域",从左到右依次是第一个域、第二个域,$1、$2分别用于表示域,$0则表示全部域

    1.打印列
    打印第一列和第四列
    [root@localhost ~]# awk '{print $1,$4}' awk1
    john.wang 021-11111111
    lucy.yang 25021-22222222
    jack.chen 021-33333333
    lily.gong 021-44444444

    打印全部列
    [root@localhost ~]# awk '{print $0}' awk1
    john.wang male 30 021-11111111
    lucy.yang female 25 25021-22222222
    jack.chen male 35 021-33333333
    lily.gong female 20 021-44444444 ShangHai

    -F指定分隔符,默认情况下是空白字符作为分隔符
    以点作为分隔符
    [root@localhost ~]# awk -F. '{print $1,$2}' awk1
    john wang male 30 021-11111111
    lucy yang female 25 25021-22222222
    jack chen male 35 021-33333333
    lily gong female 20 021-44444444 ShangHai

    2.内部变量NF
    上面的例子中,由于文件内容比较少,我们一眼就知道有多少行,每一行有多少列。但是如果遇到文件内容很多的,每一行数据的列都不一样,就需要通过特定的方式来获得文件的列数。

    默认是以空白符分隔,查看每行有多少列
    [root@localhost ~]# awk '{print NF}' awk1
    4
    4
    4
    5

    指定分隔符,查看每行有多少列
    [root@localhost ~]# awk -F. '{print NF}' awk1
    2
    2
    2
    2

    3.打印固定列
    打印最后一列,$NF是打印最后一列,这个是绝对的
    [root@localhost ~]# awk '{print $NF}' awk1
    021-11111111
    25021-22222222
    021-33333333
    ShangHai

    打印倒数第二列
    [root@localhost ~]# awk '{print $(NF-1)}' awk1
    30
    25
    35
    021-44444444

    4.截取字符串
    可以适用substr()函数对指定域截取字符串,该函数的基本适用方法如下:
    substr(指定列,第一个开始字符的位置,第二个结束的位置),第二个结束的位置可以为空,这样默认输出到该列的最后一个字符

    打印awk1文件第一列的第六个字符到最后一个字符的内容:
    [root@localhost ~]# awk '{print substr($1,6)}' awk1
    wang
    yang
    chen
    gong

    5.确定字符串的长度
    使用内部变量length可以确定字符串的长度,示例如下:
    [root@localhost ~]# awk '{print length}' awk1
    30
    34
    30
    41


    6.使用awk求列和
    求年龄的和
    [root@localhost ~]# awk 'BEGIN{total=0}{total+=$3}END{print total}' awk1
    110

    求平均年龄
    [root@localhost ~]# awk 'BEGIN{total=0}{total+=$3}END{print total/NR}' awk1
    27.5

  • 相关阅读:
    《骆驼祥子》
    《基督山伯爵》
    JDeveloper 假死问题
    JSP代码执行顺序
    Ajax简单案例(实现提交值到服务器值不刷新页面)
    JS和JSP之间值传递
    如何更好的编码
    Telnet 便捷执行脚本
    MyBatis 缓存
    MyBatis 中传递多个参数的 4 种方式
  • 原文地址:https://www.cnblogs.com/liangjiongyao/p/9304069.html
Copyright © 2011-2022 走看看