首页 > 系统服务 > 详细

【Linux】awk指令

时间:2019-04-02 12:35:37      阅读:150      评论:0      收藏:0      [点我收藏+]

介绍:

  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

 

【Linux】awk指令

原文:https://www.cnblogs.com/f0t1/p/10641301.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!