awk 语法与内置变量(二)

OFS 与 ORS

OFS(output field separator) ,输出字段分隔符,默认为空格。 ORS (output raw separator) ,输出行分隔符,默认为回车。

cat OFS_ORS.text 
ab|cde*fg|hij*kl|mno

指定输入字段分隔符 FS 为 | ,指定输入行分隔符 RS 为 * ,如下

awk 'BEGIN{FS="|";RS="*"}{print $1, $2}' OFS_ORS.text
ab cde
fg hij
kl mno

指定输出行分隔符为 @ ,如下

awk 'BEGIN{FS="|";RS="*";ORS="@"}{print $1, $2}' OFS_ORS.text 
ab cde@fg hij@kl mno

可见字段之间分隔符依然为空格,现将其指定为 # ,示例如下

awk 'BEGIN{FS="|";RS="*";ORS="@";OFS="#"}{print $1, $2}' OFS_ORS.text 
ab#cde@fg#hij@kl#mno

注意,输出字段之间须有逗号,如果不加则不会正常显示

awk 'BEGIN{FS="|";RS="*";ORS="@";OFS="#"}{print $1 $2}' OFS_ORS.text
abcde@fghij@klmno

FILENAME

表示当前处理的文件名,如果文件有多行且没有匹配规则限制,则每一行都将输出文件名,如下

awk '{print FILENAME}' trump.txt 
trump.txt
trump.txt
trump.txt

ARGC 与 ARGV

ARGC 表示参数个数, ARGV 则表示包含参数的数组,示例如下

awk '{print ARGC}' trump.txt OFS_ORS.text 

由于 trump.txt 有三行数据,OFS_ORS.txt 有一行数据,算上 awk 本身一共三个参数,分别是 awk 、 trump.txt 、 OFS_ORS.txt 。

3
3
3
3

ARGV 包含具体参数,如下

awk '{print ARGV[0],ARGV[1],ARGV[2]}' trump.txt OFS_ORS.text 
awk trump.txt OFS_ORS.text 
awk trump.txt OFS_ORS.text 
awk trump.txt OFS_ORS.text 
awk trump.txt OFS_ORS.text 
awk
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!