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

Linux学习笔记-------Linux三剑客awk的用法_第1张图片Linux学习笔记-------Linux三剑客awk的用法_第2张图片Linux学习笔记-------Linux三剑客awk的用法_第3张图片Linux学习笔记-------Linux三剑客awk的用法_第4张图片Linux学习笔记-------Linux三剑客awk的用法_第5张图片Linux学习笔记-------Linux三剑客awk的用法_第6张图片Linux学习笔记-------Linux三剑客awk的用法_第7张图片AWK文本处理工具  

        AWK是一个优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一。这种编程及数据操作语言(其名称得自于它的创始人阿尔佛雷德·艾侯、彼得·温伯格和布莱恩·柯林汉姓氏的首个字母)的最大功能取决于一个人所拥有的知识。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

Linux学习笔记-------Linux三剑客awk的用法_第8张图片

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

Linux学习笔记-------Linux三剑客awk的用法_第9张图片

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

Linux学习笔记-------Linux三剑客awk的用法_第10张图片

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

Linux学习笔记-------Linux三剑客awk的用法_第11张图片

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

Linux学习笔记-------Linux三剑客awk的用法_第12张图片

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

Linux学习笔记-------Linux三剑客awk的用法_第13张图片

 

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

Linux学习笔记-------Linux三剑客awk的用法_第14张图片

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

Linux学习笔记-------Linux三剑客awk的用法_第15张图片

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

Linux学习笔记-------Linux三剑客awk的用法_第16张图片

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

Linux学习笔记-------Linux三剑客awk的用法_第17张图片

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 

Linux学习笔记-------Linux三剑客awk的用法_第18张图片

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

 Linux学习笔记-------Linux三剑客awk的用法_第19张图片

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

Linux学习笔记-------Linux三剑客awk的用法_第20张图片

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

Linux学习笔记-------Linux三剑客awk的用法_第21张图片

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

Linux学习笔记-------Linux三剑客awk的用法_第22张图片

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

Linux学习笔记-------Linux三剑客awk的用法_第23张图片Linux学习笔记-------Linux三剑客awk的用法_第24张图片Linux学习笔记-------Linux三剑客awk的用法_第25张图片

awk -F : '$6!~/\

Linux学习笔记-------Linux三剑客awk的用法_第26张图片Linux学习笔记-------Linux三剑客awk的用法_第27张图片

AWK的应用

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

Linux学习笔记-------Linux三剑客awk的用法_第28张图片

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

Linux学习笔记-------Linux三剑客awk的用法_第29张图片

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

Linux学习笔记-------Linux三剑客awk的用法_第30张图片

Linux学习笔记-------Linux三剑客awk的用法_第31张图片

你可能感兴趣的:(Linux学习笔记-------Linux三剑客awk的用法)