“Awk”的版本间差异
跳到导航
跳到搜索
(以“==基本用法== awk [ -F re] [parameter...] ['prog'] [-f progfile][in_file...] ==参数说明== -F re:允许awk更改其字段分隔符。默认是空格 parame...”为内容创建页面) |
(→例子) |
||
第45行: | 第45行: | ||
*read from "ls *zip", seperate it with '/' and assign them to $1, $2, then mkdir $2, "|sh" make it execute. |
*read from "ls *zip", seperate it with '/' and assign them to $1, $2, then mkdir $2, "|sh" make it execute. |
||
$ls *zip |awk -F/ '{print $1, $2}' |awk '{print "mkdir "$2}' |sh |
$ls *zip |awk -F/ '{print $1, $2}' |awk '{print "mkdir "$2}' |sh |
||
*显示奇偶行用awk可以这样: |
|||
$awk 'NR%2==0' file |
|||
$awk 'NR%!=0' file |
|||
*删除空行还可以这样 |
|||
$awk 'NF>0' file |
2012年4月6日 (五) 16:12的最新版本
基本用法
awk [ -F re] [parameter...] ['prog'] [-f progfile][in_file...]
参数说明
-F re:允许awk更改其字段分隔符。默认是空格
parameter: 该参数帮助为不同的变量赋值。
'prog': awk的程序语句段。这个语句段必须用单引号 ' ' 括起,以防被shell解释。这个程序语句段的标准形式为:
'pattern {action}'
其中pattern参数可以是egrep正则表达式中的任何一个,它可以使用语法/re/再加上一些样式匹配技巧构成。与sed类似,你也可以使 用","分开两样式以选择某个范围。
你可以省略pattern和action之一,但不能两者同时省略,当省略pattern时没有样式匹配,表示对所有行(记录)均执行操作,省略 action时执行缺省的操作��在标准输出上显示。
awk不修改输入文件。如果未指定输入文件,awk将接受标准输入,并将结果显示在标准输出上。awk支持输入输出重定向。
在awk中,缺省的情况下总是将文本文件中的一行视为一个记录,而将一行中的某一部分作为记录中的一个字段。为了操作这些不同的字段,awk借用 shell的方法,用$1,$2,$3...这样的方式来顺序地表示行(记录)中的不同字段。特殊地,awk用$0表示整个行(记录)。
例子
- 显示文件中含有doc的记录
$awk '/sun/' mydoc 注:由于显示整个记录(全行)是awk的缺省动作,因此可以省略action项。
- 显示文件myfile中的行号和第3字段:
$awk '{printf"%03d%s",NR,$1}' myfile
- 显示文本myfile中所有超过80个字符的行号
$awk 'length($0)>80 {print NR}' myfile 注:这里用$0表示整个记录(行),同时,内置变量NR(行号)不使用标志符'$'。 length() 内置函数
- 将竖排的数据生成横排数据
$awk '{printf("%s,",$1)}' filename > newfile
- 将横排的数据生成竖排
$awk -F, '{i=1 ;while ( i <= NF ) {print $i;i++}}' file1 >file2
- read from "ls *zip", seperate it with '/' and assign them to $1, $2, then mkdir $2, "|sh" make it execute.
$ls *zip |awk -F/ '{print $1, $2}' |awk '{print "mkdir "$2}' |sh
- 显示奇偶行用awk可以这样:
$awk 'NR%2==0' file $awk 'NR%!=0' file
- 删除空行还可以这样
$awk 'NF>0' file