Linux系统之文本格式化工具awk(2)

%s

打印字符串,如printf "%10s\n", 6745结果为十个空格加6745。

可更改的格式:

N$

位置指示符,可调整字符串的输出位置。printf "%s %s %s\n", "I", "lOVE","YOU"输出为:I LOVE YOU,我们调整一下位置,printf "%3$s %2$s %1$s\n", "YOU", "LOVE","I",输出结果为:I LOVE YOU

wKioL1NBLmigIuXEAADsYHCzwN8582.jpg

修饰符

N: 显示宽度;

-: 左对齐;

+:右对齐(也可以显示数值符号正负之用);

wKiom1NBRyWjY4XlAADA52wl3YQ099.jpg

3、模式和操作

⑴、模式可以是以下任意一个:

/正则表达式/:使用通配符的扩展集。

关系表达式:可以用下面运算符表中的关系运算符进行操作,可以是字符串或数字的比较,如$2>%1选择第二个字段比第一个字段长的行。

模式匹配表达式:用运算符~(匹配)和~!(不匹配)。

模式,模式:指定一个行的范围。该语法不能包括BEGIN和END模式。

BEGIN:让用户指定在第一条输入记录被处理之前所发生的动作,通常可在这里设置全局变量。

END:让用户在最后一条输入记录被读取之后发生的动作。

⑵、操作由一人或多个命令、函数、表达式组成,之间由换行符或分号隔开,并位于大括号内。主要有四部份:

变量或数组赋值

输出命令

内置函数

控制流命令

4、变量

⑴、awk内置变量之记录变量

FS: field separator   读取文件本时,所使用字段分隔符  
RS: Record separator   输入文本信息所使用的换行符  
OFS: Output Filed Separator   输出字段分隔符(默认值是一个空格)  
ORS:Output Row Separator   输出记录分隔符(默认值是一个换行符)  

wKioL1NBNCzhKn2dAAHfTp_8JTE006.jpg

注:

从$1,$2一直到$NF,整行用$0标,如果$0被赋予新值,所有的$1,$2...和NF都将被重新计算。同样,若$i被改变,$0将用OFS重新计算。

⑵、awk内置变量之数据变量

NR: The number of input records   awk命令所处理的记录数;如果有多个文件,这个数目会把处理的多个文件中行统一计数  
NF:Number of Field   当前记录的field个数  
FNR   当前文件的相对记录数  
ARGV   数组,保存命令行本身这个字符串,如awk '{print $0}' a.txt b.txt这个命令中,ARGV[0]保存awk,ARGV[1]保存a.txt  
ARGC   awk命令的参数的个数  
FILENAME   awk命令所处理的文件的名称  
ENVIRON   当前shell环境变量及其值的关联数组  

NR用法

wKioL1NBN1iCKEKLAAHv8FnWF1E842.jpg

NF用法(默认以空格分隔)

wKiom1NBOCewuwqhAAH-50uswW4321.jpg

FNR用法

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/15553.html