引言
- 本文主要介绍AWK中Script & Pattern定义以及控制输出格式化的内置变量(OFS,ORS)介绍,仅供参考。
Script & Pattern
- 脚本(Script)组成指的是命令行中的program部分,可以成为awk代码也可以称为awk脚本,其格式为
pattern{action} - 模式(Pattern)主要有以下四种
- ERE(Extended Regular Expression)扩展的正则表达式,其实就是上篇文章写的那个参数
-F ERE里的ERE - 关系表达式:例如大于,小于,等于来进行匹配
- pattern,pattern:模式对,匹配两者之间的所有记录。
- BEGIN,END特殊模式(前面已经讲过这两个的用法)
- ERE(Extended Regular Expression)扩展的正则表达式,其实就是上篇文章写的那个参数
- 以下为一个
.awk脚本的例子(包含自定义函数以及如何使用-f参数来执行awk脚本) - 自定义函数用法:
function name(parameter list) { statements }- 注1:函数的参数列表(statements中)用逗号分隔,内部的参数默认是局部变量,无法在函数之外访问,而在函数中(parameter list)定义的变量为全局变量,可以在函数之外访问
- 注2:如果句子太长awk脚本中也可以使用
\来进行换行
# c.awk脚本内容
function test(a)
{
b=a
print "This is a very long line, so use backslash to escape the newline \
then we will print the variable a: a=" a
}
{ print b; test("gedun.me"); print b;}
# 执行命令
echo 1 | awk -f c.awk
- 上述awk脚本代码也可以直接在命令行写
内置变量(补上篇未介绍的内置变量)
- 内置变量
OFS:输出字段分割符,默认为空格,- 比如输入文件数据是以空格分割,而输出需要以"-"分割,可以使用OFS进行格式化输出
awk 'BEGIN{FS=" ";OFS="---"}{print $1,$2,$3}' a.txt
- 内置变量
ORS:输出行分割符,默认的是换行符,- 类比OFS,对输出格式有要求时,可以进行格式化输出
awk 'BEGIN{ORS=","}{print}' b.txt
- 输出不知道为啥和命令行重合了