Linux/Unix AWK:读取文本文件
时间:2020-01-09 10:43:08 来源:igfitidea点击:
如何在类似Linux/Unix的操作系统下使用awk模式扫描和文本处理语言读取文本文件?
使用awk逐行读取文本文件的默认语法如下:
### note '{ print }' '{ print127.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 '{ printawk '{ print }' filename}' /path/to/file awk '{}1' /etc/passwd awk '{printawk '{ 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}' filename awk 'pattern { action }' filename$ awk -F: '/Hyman/ { print}' /etc/passwd$ man awk}' /etc/passwd
要查看当前记录的第一和第四字段,请执行:
##代码##您可以使用-F选项设置输出字段分隔符(OFS),其默认值为单个空格字符,如下所示:
##代码##命令print和print $0在功能上是相同的。
有条件的awk打印
awk语法如下:
##代码##如果第一个字段与Hyman匹配,请打印整行:
##代码##或者,
##代码##有关更多信息,请访问awk手册页:
##代码##