- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
awk单行脚本快速参考实例教程
用法:
Unix: awk /pattern/ {print $1} # 标准 Unix shell 环境
DOS/Win: awk /pattern/ {print $1} # DJGPP 可编译通过
awk /pattern/ {print $1} # GnuWin32 ,UnxUtils,Mingw 环境
需要特别注意的是,DJGPP 编译器可以允许awk 脚本使用Unix 的引号语法
/like/ {this}。但是,用户必须知道在DOS/Windows 环境下,使用CMD.EXE 或者
COMMAND.COM 程序的话,单引号并不能保护重定向符号(, )和管道(|)。
如果使用双引号的话,在DOS/CMD 命令解释器下的特殊符号和他们的特殊含义都
会被忽略。如果你的命令提示符是bash、ksh 或者其他的Unix 终端,单引号和双引号
会沿用Unix 标准的用法。
同样,DOS/Win 用户必须记住用,百分号(% )用来标记DOS/Win 环境变量,
如果想要在awk 使用的话,需要使用双百分号(%% )来表示一个百分号% 。
如果我能确定一个脚本不需要被指出是使用在Unix, DOS 或者CMD 环境下,我通常
会省略引号。如果一个例子是GNU awk 所特有的,将会用 gawk命令来代替。如
果你发现错误或者新的命令想要添加到这个列表里(总长度控制在65 个字符一下)
,请通知我。首先我经常会尝试去写一个最短字符的脚本。为了省空间,我通常使用
1来代替{print}去打印每行,两种写法都能正确运行。
文本间隔:
# 每行后面增加一行空行
awk 1;{print }
awk BEGIN{ORS=nn};1
# 每行后面增加一行空行。输出文件不会包含连续的两个或两个以上的空行
# 注意:在Unix 系统, DOS 行包括的 CRLF (rn) 通常会被作为非空行对待
# 因此 NF 将会返回TRUE 。
awk NF{print $0 n}
# 每行后面增加两行空行
awk 1;{print n}
编号和计算:
# 以文件为单位,在每句行前加上编号 (左对齐)
# 使用制表符 (t ) 来代替空格可以有效保护页变的空白。
awk {print FNR t $0} files*
# 用制表符 (t ) 给所有文件加上连贯的编号。
awk {print NR t $0} files*
# 以文件为单位,在每句行前加上编号 (编号在左,右对齐)
# 如果在DOS 环境下,需要写两个%
awk {printf(] : %sn, NR,$0)}
# 给非空白行的行加上编号
# 记得Unix 对于 r 的处理的特殊之处。(上面已经提到)
awk NF{$0=++a : $0};{print}
awk {print (NF? ++a : :) $0}
# 计算行数 (模拟wc -l)
awk END{print NR}
# 计算每行每个区域之和
awk {s=0; for (i=1; i=NF; i++) s=s+$i; print s}
# 计算所有行所有区域的总和
awk {for (i=1; i=NF; i++) s=s+$i}; END{print s}
# 打印每行每区域的绝对值
awk {for (i=1; i=NF; i++) if ($i 0) $i = -$i; print }
awk {for (i=1; i=NF; i++) $i = ($i 0) ? -$i : $i; print }
# 计算所有行所有区域(词)的个数
awk { total = total + NF }; END {print total} file
# 打印包含 Beth 的行数
awk /Beth/{n++}; END {print n+0} file
# 打印第一列最大的行
# 并且在行前打印出这个最大的数
awk $1 max {max=$1; maxline=$0}; END{ print max, maxline}
# 打印每行的列数,并在后面跟上此行内容
awk { print NF : $0 }
# 打印每行的最后一列
awk { print $NF }
# 打印最后一行的最后一列
awk { field = $NF }; END{ print field }
# 打印列数超过4 的行
awk NF 4
# 打印最后一列大于4 的行
awk $NF 4
构建字符
您可能关注的文档
- !寡人之于国也.ppt
- (HR022-2012)关于TCL多媒体执委会成员相关任免的通知.pdf
- (目录)中国人造板行业发展预测及投资咨询报告(目录).pdf
- (目录)中国ATM机行业市场预测与投资战略规划分析报告(目录).pdf
- (目录)中国健康产业基地建设行业市场预测与投资战略规划分析报告(目录).pdf
- (目录)中国SUV市场发展预测及投资咨询报告(目录).pdf
- (目录)中国刨花板市场发展预测及投资咨询报告(目录).pdf
- (目录)中国冰箱行业发展预测及投资咨询报告(目录).pdf
- (目录)中国化妆品市场发展预测及投资咨询报告(目录).pdf
- (目录)中国大健康产业市场预测与投资机会分析报告(目录).pdf
文档评论(0)