AWK chapter2

GITHUB

2.1 模式

  • 模式汇总

    1. BEGIN{ statements }

      在输入被读取之前,statements执行一次
    2. END{ statements }

      当所有输入读取完毕后,statements被执行一次
    3. expression{ statements }

      当expression为真时,statements被执行一次
    4. /regular expression/ or compound pattern or pattern1,pattern2 { statements }

      当正则被匹配或者复合表达式为真或者范围匹配时,执行后面statements
  • 将表达式用作模式

    运算符 意义
    < 小于
    <= 小于或等于
    == 等于
    != 不等于
    >= 大于或等于
    > 大于
    匹配
    !~ 不匹配
  • 字符串匹配模式

    1. /regrxpr/

      当当前输入行包含一段被regrxpr匹配的子字符串时,该模式被匹配
    2. expression ~ /regexpr/

      expression 包含一段被regexpr匹配的子字符串时,该模式被匹配
    3. expression !~ /regexpr/

      不包含被regexpr匹配的子字符串时,模式被匹配
  • 正则表达式

    1. 元字符

      \ ^ $ . [ ] | ( ) * + ?
    2. 基本正则表达式
      1. 一个不是元字符的字符 eg. A
      2. 一个匹配特殊符号的转义字符 eg. \t
      3. 一个被引用的元字符 eg. *
      4. ^ 匹配一行的开始
      5. $ 匹配一行的结束
      6. . 匹配任意一个字符
      7. 一个字符类[ABC] 匹配字符A B 或 C
      8. 字符类的缩写形式 [A-Za-z] 匹配单个字母
      9. 一个互补的字符类 [^0-9] 匹配任意一个不是数字的字符
    3. 运算符组合
      1. 选择:A|B 匹配A或B
      2. 拼接:AB 匹配后面紧跟B 的A
      3. 闭包:A* 匹配0个或者多个A
      4. 正闭包: A+ 匹配1个或者多个A
      5. 零或者一: A? 匹配空字符串或者A
      6. 括号:被(r)匹配的字符串,与r所匹配的字符串相同
  • 复合模式

  • 范围模式
    由第一个匹配成功时开始,到第二个匹配成功时结束

    eg. FNR == 1, FNR == 5 {print FILRNAME ": " $0}

  • 模式总结

模式 例子 匹配
BEGIN BEGIN 输入被读取之前
END END 输入被读取完之后
expression $3 < 100 第三个字段小于100的行
string-matching /Asia/ 含有Asia的行
compound 3 < 100 &&4 == "Asia" 第三个字段小于100 且 第四个字段为Asia
range NR == 10, NR == 20 输入的第10行至第20行

2.2 动作

  • 动作
    expression 包括常量 变量 赋值 函数调用等等
print expression-list

printf(format, expression-list)

if (expression) 
    statements

if (expression) 
    statements 
else 
    statements

while (expression)
    statements

for (expression; expression; expression)
    statements

for (expression in array)
    statements

do 
    statements 
while (expression)

break 
continue
  • 内建变量
变量 意义 默认值
ARGC 命令行参数个数 -
ARGV 命令行参数数组 -
FILENAME 当前输入文件名 -
FNR 当前输入文件记录个数 -
FS 控制输入行的字段分割符 " "
NF 当前记录的字段个数 -
NR 到目前位置读的记录数量 -
OFMT 数值的输出格式 "%.6g"
OFS 输出字段分隔符 " "
ORS 输出记录的分隔符 "\n"
RLENGTH 被函数match匹配的字符串长度 -
RS 控制输入行的记录分隔符 "\n"
RSTART 被函数match匹配的字符串的开始 -
SUBSEP 下标分隔符 "\034"
  • 内建算数函数
函数 返回值
atan2(y,x) y/x的反正切值,定义域在-π 到 π之间
cos(x) x的余弦值,x以弧度为单位
exp(x) x的指数函数
int(x) x的整数部分
log(x) x的自然对数
rand() 返回一个随机数r
sin(x) x的正弦值
sqrt(x) x的方根
srand(x) x为新的随机种子
  • 内建字符串函数
函数 描述
gsub(r,s) 将$0中的所有出现的r替换为s,返回替换的次数
gsub(r,s,t) 将字符串t中所有出现的r替换为s,返回替换发生的次数
index(s,t) 返回字符串t在s中第一次出现的位置,t没有出现,返回0
length(s) 返回s包含的字符个数
  • 流程控制语句
    • {statements}
      语句组
    • if (expression) statements
      如果expression为真,执行statements
    • if (expression) statements else statements
      如果expression为真,执行statements,否则执行statements
    • while (expression) statements
      如果expression为真,执行statements;然后重复前面过程
    • for (expressionl; expression; expression) statements
    • for (variable in array) statements
    • do statements while (expression)
    • break
    • continue
    • next
    • exit
    • exit expression
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,014评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,796评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,484评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,830评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,946评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,114评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,182评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,927评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,369评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,678评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,832评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,533评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,166评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,885评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,128评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,659评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,738评论 2 351

推荐阅读更多精彩内容