网站大量收购独家精品文档,联系QQ:2885784924

AWK单行脚本快速参考.pdfVIP

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
首先我经常会尝试去写一个最短字符的脚本。为了省空间,我通常使用 1 来代替 {print} 去打印每行,两种写法都能正确运行。 文本间隔: # 每行后面增加一行空行 awk 1;{print } awk BEGIN{ORS=\n\n};1 # 每行后面增加一行空行。输出文件不会包含连续的两个或两个以上的空行 # 注意:在 Unix 系统, DOS 行包括的 CRLF (\r\n ) 通常会被作为非空行对待 # 因此 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(%5d : %s\n, 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 构建字符串: # 构建一指定长度的字符串(比如, 513 个空格) awk BEGIN{while (a++513) s=s ; print s} # 在某一位置中插入以特定长度的字符串 # 例子:在每行第 6 列后插入 49 个空格 gawk --re-interval BEGIN{while(a++49)s=s };{sub(/^.{6}/, s)};1 构建数组: # 以下两个部分并不是一句话脚本,但是这些技巧相当便捷所以也包括进来 # 构建一个叫 month 的数组,以数字为索引, month[1] 就是 Jan ,month[2] 就是 # Feb ,month[3] 就是 Mar ,以此类推。 split(Jan Feb Mar Apr May Jun Jul Aug Sep

您可能关注的文档

文档评论(0)

小布 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档