awk字段和引用的分离

awk字段和引用的分离

编程入门hacker2017-12-20 8:19:228223A+A-

awk应用字段名操作符$来特定字段名。在该操作符后边跟随1个大数字或自变量,用以标志字段名的部位。"$1" 表达第一位字段名, "$2" 表达下一个字段名等等等等。"$0 "表达全部键入纪录。下边的事例显示信息了第一位字段名是姓,下一个字段名是姓名,后边是联系电话。

$ awk '{ print $2,$1,$3 }' names

Robinson John 666-555-1111

$1表达姓名, $2表达姓,而$3表达联系电话。Print句子中隔开每一主要参数的逗号促使键入的各值中间有个空格符(紧接着,人们将探讨輸出字段名分隔符(OFS) ,它的值中輸出的逗号默认设置为空格符)。在这一事例中,1个键入行包括3个字段名:在姓名和姓中间有个空格符,在姓和联系电话中间有个制表符。要是想将姓和姓名结合在一起做为1个字段名,能够根据显式地特定字段名分隔符走的只鉴别制表符。那样, awk将只鉴别该纪录中的2个字段名。

能够用一切测算数值自然数的关系式来表达1个字段名,而不仅仅用大数字和自变量。

$ echo a b c d | awk 'BEGIN { one = 1; two = 2 }

> { print $(one + two) }'

C

能够在命令行中应用-F选择项更改字段名的分隔符。下边的事例将字段名分隔符改动为制表符。

$ awk -F"\t" '{ print $2 }' names

666-555-1111

"\t" 是表达1个实际上的制表符的转义序列,它应由单引号或双引号大包围着。下边2个详细地址纪录中的字段名是由逗号隔开的。

$ cat names

John Robinson, Koren Inc.,978 4th Ave.,Boston,MA 01760,696-0987

Phyllis Chapman, GVE Corp.,34 Sea Drive, Amesbury,MA 01881,879-0900

$ cat blocklist.awk

# blocklist.awk -用块文件格式复印名字和详细地址

# 键入文档一姓名、企业、街道社区、大城市、州和邮政编码、电話

{  print "" # output blank line

    print $1 # name

    print $2 # company

    print $3 # street

    print $4, $5 # city, state zip

}

第一位print句子特定1个空串("") (记牢print 自身輸出当今行)。这类分配促使在汇报中的纪录由空格符分隔。人们能够实行这一脚本制作并应用下边的指令特定字段名分隔符为逗号:

$ awk -F,-f blocklist.awk names

John Robinson

Koren Inc.

978 4th Ave.

Boston MA 01760

Phyllis Chapman

GVE Corp.

34 Sea Drive

Amesbury MA 01881

在脚本制作中特定域分隔符是1个好的习惯性而且是十分便捷的。能够根据界定系统变量FS来更改字段名分隔符。由于这一必需在载入第一行以前实行,因此必需在由BEGIN标准操纵的实际操作中特定这一自变量。

BEGIN { FS="," }

人们程序流程中应用它来复印出名字和联系电话。

$cat phonelist.awk

# phonelist.awk -复印名字和联系电话

# 键入文档一姓名、企业、街道社区、大城市、州和邮政编码、电話

BEGIN { FS = "," } #用逗号切分字段名

{ print $1 ", " $6 }

特别注意,人们在脚本制作中应用空行未改进易读性。在print句子的2个輸出字段名中间添加逗号和1个空格符。这一程序流程脚本制作能够根据下列命令行来实行:

$ awk -f phonelist.awk names

John Robinson, 696-0987

Phyllis Chapman, 879-0900

这种给了你1个有关怎么使用awk来解决可鉴别的结构化数据的基本要素。这一程序流程脚本制作用于輸出全部的键入行,但人们能够撰写配对标准来改动这一操作符促使只复印出特殊的姓名或详细地址。因而,要是人们有个长的姓名目录,人们能够仅挑选定居在特殊州的姓名。人们能够撰写为:

/MA/ {print $1 ", " $6}

这儿的MA于马萨诸塞州邮政局的简称相符合。显然,MA也将会为1个企业的姓名或别的地区的姓名相符合,至少在这种企业的姓名或别的地区的姓名中包括英文字母"MA" .人们能够检测配对特定的字段名。应用(~) 操作符能够检测1个字段名的正则表达式:

$5 ~ /MA/{ print $1 ", " $6 }

能够应用组成标记(!~)来翻转这一标准的实际意义。

$5 !~ /MA/ { print $1 ", " $6 }

这一标准


点击这里复制本文地址 以上内容由黑资讯整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
  • 3条评论
  • 晴枙海夕2022-06-03 02:31:07
  • awk应用字段名操作符$来特定字段名。在该操作符后边跟随1个大数字或自变量,用以标志字段名的部位。"$1" 表达第一位字段名, "$2" 表达下一个字段名等等等等。"$0 "表达全部键入纪录。下边的事例显示信息了第一位字段名是姓,下一个字
  • 鸢旧各空2022-06-03 01:25:33
  • en Inc.,978 4th Ave.,Boston,MA 01760,696-0987Phyllis Chapman, GVE Corp.,34 Sea Drive,
  • 温人风渺2022-06-02 20:10:22
  • 据下列命令行来实行:$ awk -f phonelist.awk namesJohn Robinson, 696-0987Phyllis Chapman, 879-0900这种给了你1个有关怎么使用awk来解决可鉴别的结构化数据的基本要素。这一程序流程脚本制作用于輸出全部的键入行,但人们能

支持Ctrl+Enter提交

黑资讯 © All Rights Reserved.  
Copyright Copyright 2015-2020 黑资讯
滇ICP备19002590号-1
Powered by 黑客资讯 Themes by 如有不合适之处联系我们
网站地图| 发展历程| 留言建议| 网站管理