Linux/Unix AWK:读取文本文件

时间:2020-01-09 10:43:08  来源:igfitidea点击:

如何在类似Linux/Unix的操作系统下使用awk模式扫描和文本处理语言读取文本文件?
使用awk逐行读取文本文件的默认语法如下:

### note '{ print }' '{ print 
127.0.0.1	localhost
192.168.1.5	wks01

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

192.168.1.10	nas01
192.168.1.11	nas02
192.168.1.12	nas03

192.168.1.50	nfs2.vmware.theitroad.com nfs2v
192.168.1.51	nfs1.vmware.theitroad.com nfs1v

172.168.232.50  nfs1.kvm.theitroad.com nfs1k
172.168.232.51  nfs2.kvm.theitroad.com nfs2k
}' '1' all are same ### awk '{ print }' /path/to/file awk '{}1' /path/to/file awk '1' /path/to/file awk '{ print
awk '{ print }' filename
}' /path/to/file awk '{}1' /etc/passwd awk '{print
awk '{ print  }' filename
}' /etc/hosts awk '{print}' /etc/hosts

输出示例:

awk '{ print ,  }' filename

打印命令用于在屏幕上显示文本。
此命令的最简单形式:

### set OFS to : ### 
### print user name, home directory and shell ###
awk -F: '{ print  " users home directory set to \""  "\" with "  " as login shell" }' /etc/passwd

这将显示当前记录的内容。
但是,在AWK中,记录分为多个字段,并且这些字段可以分别显示。
要查看第一个字段,请执行:

awk 'condition { action }' filename
awk '1 == /match/ { action }' filename 
awk '1 == /match/ { print 
$ awk -F: '1 == /Hyman/ { print 
$ awk -F: '/Hyman/ { print 
$ man awk
}' /etc/passwd
}' /etc/passwd
}' filename awk 'pattern { action }' filename

要查看当前记录的第一和第四字段,请执行:

##代码##

您可以使用-F选项设置输出字段分隔符(OFS),其默认值为单个空格字符,如下所示:

##代码##

命令print和print $0在功能上是相同的。

有条件的awk打印

awk语法如下:

##代码##

如果第一个字段与Hyman匹配,请打印整行:

##代码##

或者,

##代码##

有关更多信息,请访问awk手册页:

##代码##