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
本作品采用《CC 协议》,转载必须注明作者和本文链接