变量格式字符串时的awk/gawk printf,将零更改为破折号
我有一个用awk打印的数字表,使用变量格式字符串时的awk/gawk printf,将零更改为破折号,awk,printf,Awk,Printf,我有一个用awk打印的数字表,使用printf printf完成数字的一些截断 (cat <<E\OF Name,Where,Grade Bob,Sydney,75.12 Sue,Sydney,65.2475 George,Sydney,84.6 Jack,Sydney,35 Amy,Sydney, EOF )|gawk 'BEGIN{FS=","} FNR==1 {print("Name","Where","Grade");next} {if ($3<50) {$3=0} p
printf
printf
完成数字的一些截断
(cat <<E\OF
Name,Where,Grade
Bob,Sydney,75.12
Sue,Sydney,65.2475
George,Sydney,84.6
Jack,Sydney,35
Amy,Sydney,
EOF
)|gawk 'BEGIN{FS=","}
FNR==1 {print("Name","Where","Grade");next}
{if ($3<50) {$3=0}
printf("%s,%s,%d \n",$1,$2,$3)}'
我想要的是显示小于50的分数,或者缺少分数,用破折号(“-”)表示
这需要将printf
中的第三个字符串格式从%d更改为%s。
因此,在某些行中,第三列应该是值,在某些行中,第三列应该是字符串。我怎么能让你呆呆地看着呢?或者我应该通过另一个awk来重新格式化
$ gawk 'BEGIN{FS=","}
FNR==1 {print("Name","Where","Grade");next}
{if ($3<50) {$3="-"} else {$3=sprintf("%d", $3)}
printf("%s,%s,%s \n",$1,$2,$3)}' ip.txt
Name Where Grade
Bob,Sydney,75
Sue,Sydney,65
George,Sydney,84
Jack,Sydney,-
Amy,Sydney,-
三元运算符是if-else的替代运算符?:
是一种用于打印1
$0
^1
第二个脚本。显然你不会用第一个@Sundeep“假设你错过了……”。正确:)
Name Where Grade
Bob,Sydney,75
Sue,Sydney,65
George,Sydney,84
Jack,Sydney,-
Amy,Sydney,-
$ gawk 'BEGIN{FS=","}
FNR==1 {print("Name","Where","Grade");next}
{if ($3<50) {$3="-"} else {$3=sprintf("%d", $3)}
printf("%s,%s,%s \n",$1,$2,$3)}' ip.txt
Name Where Grade
Bob,Sydney,75
Sue,Sydney,65
George,Sydney,84
Jack,Sydney,-
Amy,Sydney,-
$ awk -F, -v OFS=, 'NR>1{$3 = $3 < 50 ? "-" : int($3)} 1' ip.txt
Name,Where,Grade
Bob,Sydney,75
Sue,Sydney,65
George,Sydney,84
Jack,Sydney,-
Amy,Sydney,-