1.awk功能介绍
awk是基于指定规则从文本文件和字符串中抽取和浏览信息。比如用户登录日志中筛选特定用户日志记录做统计或者查看。
2.awk调用方式
(1)命令行方式:awk [-F 域分隔符] 'awk程序段' 输入文件
例子:awk -F : '{printf $0} ' /etc/passwd
(2)awk命令放入脚本文件(脚本第一行:#!/bin/awk -f),然后通过awk调用脚本文件。
调用形式:awk -f awk脚本文件 输入文件
(3)awk命令放入脚本文件(脚本第一行:#!/bin/awk -f),设置该脚本文件为可执行文件。
调用形式:./awk脚本文件 输入文件
3.awk脚本
(1)域和记录
域:awk输入内容按照分隔符划分的各部分,比如$1表示第1域、$7表示第7域、$0表示所有记录(包括域内容和分隔符)。
记录:awk输入内容的一行内容。
(2)模式和动作
awk脚本由模式和动作组成,模式部分是决定动作语句何时触发,动作部分是对数据进行的操作。
例子中 BEGIN{..}和END{...}属于模式部分。BEGIN部分是awk读取输入文件记录之前执行,一般用来初始化计数变量和打印表头;END部分是awk读取输入文件内容之后执行,一般用作输出统计数值和输出格式化内容的结束标志;另外模式可以是任何条件语句或复合语句或正则表达式。
中间{...}里是动作部分,用来打印符合模式的内容。print是内容输出函数。
(3)awk输出内容保存方式:重定向到文件和tee命令
比如awk处理的passwd.bak文件的内容保存到result.txt文件中
重定向到文件方式:awk '{print $0}' passwd.bak > result.txt
tee命令方式: awk '{print $0}' passwd.bak | tee result.txt
注意:<1>重定向到文件方式输出数据不再打印到屏幕,tee命令则会打印到屏幕
<2>重定向方式注意“>”和“>>”的区别,“>”会覆盖文件里面的原内容,“>>”则是在文件里面 追加内容。
(4)awk输入方式:
<1> awk-script input-file
<2>awk-script-file < input-file
<3>input-file | awk-script-file