惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
P
Palo Alto Networks Blog
T
ThreatConnect
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
T
True Tiger Recordings
P
Privacy & Cybersecurity Law Blog
B
Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
C
Comments on: Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
N
News and Events Feed by Topic
NISL@THU
NISL@THU
腾讯CDC
雷峰网
雷峰网
Security Latest
Security Latest
李成银的技术随笔
M
Microsoft Research Blog - Microsoft Research
L
LangChain Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
博客园 - Franky
N
News | PayPal Newsroom
V
V2EX
A
About on SuperTechFans
The Register - Security
The Register - Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
C
Cyber Attacks, Cyber Crime and Cyber Security
The Hacker News
The Hacker News
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
爱范儿
爱范儿
A
Arctic Wolf
L
LINUX DO - 最新话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - xiaoyixy

WeakHashMap相关 Java常见问题[转] MONO,原来你是水中月 Lucene 搜索引擎倒排索引原理 PXE Network Boot and Install Linux over NFS server 让进程在后台运行方法汇总 用 Spreadsheet::ParseExcel处理中文excel文件 IBM terminology abstraction Perl Note(2) 亲爱的,我想念你 Perl命令行应用 深入PAM - xiaoyixy Perl Note(1) Shell技巧 GRUB 高手好习惯 Shell脚本 用户管理 - xiaoyixy re notes - xiaoyixy
awk学习
xiaoyixy · 2008-08-21 · via 博客园 - xiaoyixy

了解规则

AWK 程序由规则 组成,它们是一些模式,后面跟着由换行分隔的操作。当 AWK 执行一条规则时,它在输入记录中搜索给定模式的匹配项,然后对这些记录执行给定的操作:

/pattern/ { action }

您可以在规则中省略模式或操作

操作由 AWK 语句组成,使用分号 (;) 来进行分隔。您还可以在同一行内容中提供多个规则,但是您必须使用分号对它们进行分隔。当规则中仅包含一项操作时,将对输入中的每条记录执行该操作。当规则中仅包含一个模式时,将打印出匹配该模式的所有记录。

空模式 // 匹配空字符,这等价于规则中不包含任何模式。然而,当给定空操作 {} 时,这并不等价于没有任何操作(会打印)。空操作表示不进行任何操作(因此,不打印出该记录)

使用 BEGIN 和 END 模式

AWK 包含两种特殊的模式:BEGINEND。它们都不需要使用斜线。BEGIN 模式指定了在处理任何记录之前需要执行的操作:

BEGIN {action}    

END 模式指定在处理了所有记录之后需要执行的操作:

END {action}

BEGIN 通常用来设置变量,而 END 通常用来对从输入记录中读取的数据和图表进行制表、汇总和处理。通常,这些模式可以用来在输出经过处理的文本之前和之后输出文本。

使用感叹号 (!) 作为字段分隔符打印示例数据的第 1 个字段:

$ awk ' BEGIN { FS = "!" } { print $1 } ' sample

常见的 GAWK 变量

NF 该变量包含每个记录的字段个数。 NR 该变量包含当前的记录个数。 FS 该变量是字段分隔符。 RS 该变量是记录分隔符。 OFS 该变量是输出字段分隔符。 ORS 该变量是输出记录分隔符。 FILENAME 该变量包含所读取的输入文件的名称。 IGNORECASEIGNORECASE 设置为非空值,GAWK 将忽略模式匹配中的大小写。
变量描述

要匹配单个模式,可以在规则中进行指定

$ awk '/green/ { print }' sample

在字段中匹配模式

要在特定的字段中(相对于在整个记录中)匹配模式,可以指定该字段并使用 ~ 操作符,这表示“包含”,然后指定该模式:

$field ~ /pattern/     

!~ 操作符以相反的方式进行操作,您可以使用它表示要匹配那些 包含给定模式的字段:

$field !~ /pattern/  # does it like the pattern bound in perl? i.e. =~

使用范围模式

在两个模式之间使用逗号,可以指定一个范围,这表示匹配位于这两种模式之间和模式本身的所有文本。与其他的搜索不同,范围模式在匹配文本时可以跨越不同的记录。它输出包含匹配项部分内容的完整的记录。例如,搜索从 Heighfolly 的范围,将输出前两个记录的文本:

$ awk '/Heigh/,/folly/' sample
Heigh-ho! sing, heigh-ho! unto the green holly:

Most friendship is feigning, most loving mere folly: