我的记录下面有一个 CSV 文件。根据 awk 条件,如果 Status Column 值小于 30,则应打印相应 Project(Column1)值 Orange。
awk -F'[,]' '{ if ( 30 >= 30 ) {print $2,$9} }' user.csv
电流输出
Project Status
Apple "Current (days remaining : 83)"
Orange"Current (days remaining : 30)"
预期产出
Project
Orange
ID,Project,"App System",Version,"Report Date",Status
1,Apple,NAT,0,0,0,0,09/02/2022,"Current (days remaining : 83)"
2,Orange,BAT,0,0,0,0,09/02/2022,"Current (days remaining : 30)"
请有人帮我解决这个问题吗?
答案1
问题是您试图使用 shell 比较运算符-le
来awk
代替awk
自己的比较运算符<=
。您的文字将要求描述为少于而不是小于或等于,但您的示例输出显示后者。此外,您实际上已经得到了30
表达式的两侧,而不是将字段与值进行比较。
最后,您需要将第九个逗号分隔字段拆分为多个部分,以便可以执行数字比较。冒号 ( :
) 是执行此任务的方便分隔符。
awk -F, '{ split($9, c, ":"); if (NR==1 || c[2]+0 <= 30) {print $2} }' user.csv
输出
Project
Orange