Linux学习笔记-------Linux三剑客awk的用法

AWK文本处理工具  

        AWK是一个优良的文本处理工具,LinuxUnix环境中现有的功能最强大的数据处理引擎之一。这种编程及数据操作语言(其名称得自于它的创始人阿尔佛雷德·艾侯、彼得·温伯格和布莱恩·柯林汉姓氏的首个字母)的最大功能取决于一个人所拥有的知识。awk经过改进生成的新的版本nawk,gawk,现在默认linux系统下日常使用的是gawk,用命令可以查看正在应用的awk的来源(ls -l /bin/awk )

AWK的语法

        在最初创造 AWK 时,其目的是用于文本处理,并且这种语言的基础是,只要在输入数据中有模式匹配,就执行一系列指令。该实用工具扫描文件中的每一行,查找与命令行中所给定 内容相匹配的模式。如果发现匹配内容,则进行下一个编程步骤。如果找不到匹配内容,则继续处理下一行。

尽管操作可能会很复杂,但命令的语法始终是:

        awk '{pattern + action}' 或者 awk 'pattern {action}'

其中 pattern 表示 AWK 在数据中查找的内容,而 action 是在找到匹配内容时所执行的一系列命令。花括号 ({}) 不需要在程序中始终出现,但它们用于根据特定的模式对一系列指令进行分组。

AWK的调用方式

一、 awk命令行,你可以象使用普通UNIX命令一样使用awk,在命令行中你也可以使用awk程序设计语言,虽然awk支持多行的录入,但是录入长长的命令行并保证其正确无误却是一件令人头疼的事,因此,这种方法一般只用于解决简单的问题。当然,你也可以在shell script程序中引用awk命令行甚至awk程序脚本。

二、使用-f选项调用awk程序。awk允许将一段awk程序写入一个文本文件,然后在awk命令行中用-f选项调用并执行这段程序。具体的方法我们将在后面的awk语法中讲到。

三、利用命令解释器调用awk程序:利用UNIX支持的命令解释器功能,我们可以将一段awk程序写入文本文件,然后在它的第一行加上:#!/bin/awk -f 并赋予这个文本文件以执行的权限。这样做之后,你就可以在命令行中用类似于下面这样的方式调用并执行这段awk程序了。

AWK的使用

awk -F : '{print $1}' passwd

awk -F : '{print $2}' passwd

awk -F : '{print $1$2}' passwd

awk -F : 'BEGIN{print "hello"}{print $2}' passwd

awk -F : 'BEGIN{n=1}{print $2,n}' passwd 

awk -F : 'BEGIN{n=1}{print $2,n++}'

 

awk -F : 'BEGIN{n=1}{print n++,$1}' passwd 

awk -F : 'BEGIN{n=1}{print n++,$1}END{print "over"}' passwd 

awk -F : 'BEGIN{n=1}{print n++,$1}END{print NR}' passwd 

awk -F : 'BEGIN{n=1}{print n++,$1}END{print NF}' passwd 

awk '/bash/{print}' passwd
awk  -F : '/bash/{print}' passwd
awk  -F : '/bash/{print $1}' passwd

awk -F : 'NR==3{print $1}' passwd 
awk -F : 'NR==3{print}' passwd 

awk -F : 'NR>=4&&NR<=6{print}' passwd

awk -F : 'NR>=4||NR<=6{print}' passwd

awk '{print FILENAME}' passwd 

awk -F : '/^ro/{print}' /etc/passwd 
awk -F : '/bash$/{print}' /etc/passwd 
awk -F : '/bash$/{print $1}' /etc/passwd

 

awk '/^[a-d]/{print}' /etc/passwd

awk '/^[^a-d]/{print}' /etc/passwd

awk '/^r|bash$/{print}' /etc/passwd  
awk '/^r/||/bash$/{print}' /etc/passwd  

awk '/^r/&&/bash$/{print}' /etc/passwd
awk -F : '$6~/bin$/{print}' /etc/passwd
awk -F : '$6!~/bin$/{print}' /etc/passwd

awk -F : '$6!~/\<bin$/{print}' /etc/passwd 

AWK的应用

awk 'BEGIN{a=12;print a+12}'

awk 'BEGIN{N=0}/nologin$/{N++}END{print N}' /etc/passwd

awk -F : 'BEGIN{N=0}$6!~/^\/home/&&$7~/bash$/{print $1;N++}END{print N}' /etc/passwd

编写脚本实现网卡ip的获取

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值