awk是功能强大的文本分析工具. 与grep搜索和sed编辑相比,awk在分析数据和生成报告时特别强大. 简而言之,awk逐行读取文件,将每一行切成空格作为默认分隔符,然后对剪切的部分执行各种分析处理.
awk '{pattern + action}' {filenames}
尽管操作可能很复杂,但语法始终是相同的,其中pattern表示AWK在数据中查找的内容awk 替换,而action是在找到匹配内容时执行的一系列命令. 花括号({})不一定总是出现在程序中,而是用于根据特定的模式对一系列指令进行分组. pattern是要表示的正则表达式,用斜杠括起来.
awk语言的最基本功能是根据文件或字符串中的指定规则浏览和提取信息. 在awk提取信息之后,可以执行其他文本操作. 完整的awk脚本通常用于格式化文本文件中的信息. 通常awk 替换,awk作为文件单位处理. Awk接收文件的每一行,然后执行相应的命令来处理文本.
ARGC 命令行参数个数
ARGV 命令行参数排列
ENVIRON 支持队列中系统环境变量的使用
FILENAME awk浏览的文件名
FNR 浏览文件的记录数
FS 设置输入域分隔符,等价于命令行 -F选项
NF 浏览记录的域的个数
NR 已读的记录数
OFS 输出域分隔符
ORS 输出记录分隔符
RS 控制记录分隔符
$0变量是指整条记录。$1表示当前行的第一个域,$2表示当前行的第二个域,......以此类推。
$NF是number finally,表示最后一列的信息,跟变量NF是有区别的,变量NF统计的是每行列的总数 sub(/regexp/, replacement, target)
请注意第三个参数目标,如果省略,请使用$ 0作为参数,即整行文本.
示例1: 替换单个字符串
仅将每行的第一个AAAA替换为BBBB
awk '{ sub(/AAAA/,"BBBB"); print $0 }' t.txt
示例2: 替换所有字符串
用BBBB替换每行中的所有AAAA
awk '{ gsub(/AAAA/,"BBBB"); print $0 }' t.txt
示例3: 替换满足条件的行字符串
仅在出现字符串CCCC的前提下,用BBBB替换该行中的所有AAAA
awk '/CCCC/ { gsub(/AAAA/,"BBBB"); print $0; next }
{ print $0 }
' t.txt
示例4: 替换多个可选字符串
是AAAA还是CCCC,请全部替换为BBBB
awk '{ gsub(/AAAA|aaaa/,"BBBB"); print $0 }' t.txt
示例5: 整个单词匹配替换
整个单词匹配AAAA;也就是说,它与AAA和AAAAA(即完整的四个字符串AAAA)不匹配.
awk '{ sub(/\/,"BBBB"); print $0 }' t.txt
示例6: 正则表达式匹配
将所有以A开头的字符串替换为字符B,而不管包含多个A的后续字符串.
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-164138-1.html