zoukankan      html  css  js  c++  java
  • 【Linux】awk指令

    介绍:

      awk是一种可以处理数据,产生格式化报表的语言。其工作方式是读取数据文件,将每一行数据视为一条记录,没笔记录按分隔符(默认空格)分割成若干字段,输出各字段的值。

    实例:

    [jboss@vm-kvm11902-app ~]$ cat test.txt 
    eth0      Link encap:Ethernet  HWaddr 00:1A:4A:68:11:23  
              inet addr:10.221.4.166  Bcast:10.221.4.255  Mask:255.255.255.0
              inet6 addr: fe80::21a:4aff:fe68:1123/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:255862464 errors:0 dropped:0 overruns:0 frame:0
              TX packets:277983408 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:66805026750 (62.2 GiB)  TX bytes:37979102088 (35.3 GiB)
    
    lo        Link encap:Local Loopback  
              inet addr:127.0.0.1  Mask:255.0.0.0
              inet6 addr: ::1/128 Scope:Host
              UP LOOPBACK RUNNING  MTU:16436  Metric:1
              RX packets:12789957 errors:0 dropped:0 overruns:0 frame:0
              TX packets:12789957 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0 
              RX bytes:706680171 (673.9 MiB)  TX bytes:706680171 (673.9 MiB)

    用法1:

    显示指定文件中包含指定字符串的数据行

    awk '/inet/' test.txt  #查找test.txt中包含inet的数据行
    [jboss@vm-kvm11902-app ~]$ awk '/inet/' test.txt
              inet addr:10.221.4.166  Bcast:10.221.4.255  Mask:255.255.255.0
              inet6 addr: fe80::21a:4aff:fe68:1123/64 Scope:Link
              inet addr:127.0.0.1  Mask:255.0.0.0
              inet6 addr: ::1/128 Scope:Host

    用法2:

    显示指定文件每行指定字段

    awk '{print $1, $2}' test.txt  #显示test.txt文件中每行第一、二字段
    [jboss@vm-kvm11902-app ~]$ awk '{print $1, $2}' test.txt
    eth0 Link
    inet addr:10.221.4.166
    inet6 addr:
    UP BROADCAST
    RX packets:255862464
    TX packets:277983408
    collisions:0 txqueuelen:1000
    RX bytes:66805026750
     
    lo Link
    inet addr:127.0.0.1
    inet6 addr:
    UP LOOPBACK
    RX packets:12789957
    TX packets:12789957
    collisions:0 txqueuelen:0
    RX bytes:706680171

    用法3:

    用法1+用法2

    awk '/inet/{print $1, $2}' test.txt    #显示test.txt文件中包含inet数据行的第一、二个字段
    [jboss@vm-kvm11902-app ~]$ awk '/inet/{print $1, $2}' test.txt
    inet addr:10.221.4.166
    inet6 addr:
    inet addr:127.0.0.1
    inet6 addr:

    用法4:

    使用-F指定新的分隔符

    awk -F: '/inet/{print $1, $2}' test.txt  #显示test.txt文件中,包含inet的数据行,按照“:”进行分割的第一、二个字段
    [jboss@vm-kvm11902-app ~]$ awk -F: '/inet/{print $1, $2}' test.txt
              inet addr 10.221.4.166  Bcast
              inet6 addr  fe80
              inet addr 127.0.0.1  Mask
              inet6 addr  

    用法5:

    使用BEGIN{OFS="***"}重新定义分隔符

    awk -F: 'BEGIN{OFS="***"}/inet/{print $1, $2}' test.txt  #显示test.txt文件中,包含inet的数据行,按照“:”进行分割的第一、二个字段后按照分隔符“***”重新进行拼接的记录
    [jboss@vm-kvm11902-app ~]$ awk -F: 'BEGIN{OFS="***"}/inet/{print $1, $2}' test.txt
              inet addr***10.221.4.166  Bcast
              inet6 addr*** fe80
              inet addr***127.0.0.1  Mask
              inet6 addr*** 

    举个栗子

    [jboss@vm-kvm11902-app ~]$ ifconfig | grep 'inet addr' | grep Bcast | awk  '{print $2}' | awk -F: '{print $2}'
    10.221.4.166
  • 相关阅读:
    collections模块整理
    jQuery 事件
    前端开发问题点
    无线wifi
    MySQL 数据库--SQL语句优化
    MySQL 数据库--索引原理与慢查询优化
    MySQL 数据库--内置功能
    MySQL 数据库--权限管理
    MySQL -Naivacat工具与pymysql模块
    MySQL 数据库 -- 数据操作
  • 原文地址:https://www.cnblogs.com/f0t1/p/10641301.html
Copyright © 2011-2022 走看看