预览加载中,请您耐心等待几秒...
1/7
2/7
3/7
4/7
5/7
6/7
7/7

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

用法: Unix:awk'/pattern/{print"$1"}'#标准Unixshell环境 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环境下,我通常 会省略引号。如果一个例子是GNUawk所特有的,将会用'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'{printFNR"t"$0}'files* #用制表符(t)给所有文件加上连贯的编号。 awk'{printNR"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{printNR}' #计算每行每个区域之和 awk'{s=0;for(i=1;i<=NF;i++)s=s+$i;prints}' #计算所有行所有区域的总和 awk'{for(i=1;i<=NF;i++)s=s+$i};END{prints}' #打印每行每区域的绝对值 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{printtotal}'file #打印包含"Beth"的行数 awk'/Beth/{n++};END{printn+0}'file #打印第一列最大的行 #并且在行前打印出这个最大的数 awk'$1>max{max=$1;maxline=$0};END{printmax,maxline}' #打印每行的列数,并在后面跟上此行内容 awk'{printNF":"$0}' #打印每行的最后一列 awk'{print$NF}' #打印最后一行的最后一列 awk'{field=$NF};END{printfield}' #打印列数超过4的行 awk'NF>4' #打印最后一列大于4的行 awk'$NF>4' 构建字符串: #构建一指定长度的字符串(比如,513个空格) awk'BEGIN{while(a++<513)s=s"";prints}' #在某一位置中插入以特定长度的字符串 #例子:在每行第6列后插入49个空格 gawk--re-interval'BEGIN{while(a++<49)s=s""};{sub(/^.{6}/,"&"s)};1' 构建数组: #以下两个部分并不是一句话脚本,但是这些技巧相当便捷所以也包括进来 #