【发布时间】:2017-07-18 06:15:22
【问题描述】:
我有一个逗号分隔的文件,如下所示
0,category=a,type=b,value=1
1,category=c,type=b,.....,original_value=0
2,category=b,type=c,....,original_value=1,....,corrected_value=3
文件中的一行可以包含 (1) 只有“价值” (2) 仅“原始值” (3)'原始值'和'修正值'
值可以在任何列中。
下面我写的awk命令在模式匹配后只能打印一个字段。
cat file | awk -F, 'BEGIN{OFS=","} /value/ { for (x=1;x<=NF;x++) if ($x~"value") {print $2,$3,$(x)} }' | sort -u
电流输出:
category=a,type=b,value=1
category=b,type=c,corrected_value=3
category=b,type=c,original_value=1
category=c,type=b,original_value=0
如果出现两个模式匹配,我如何打印一行的两个字段(列)?在这种情况下,如果 original_value 和corrected_value 都存在。
预期输出:
category=a,type=b,value=1
category=b,type=c,original_value=1,corrected_value=3
category=c,type=b,original_value=0
Bash 版本:4.3.11
【问题讨论】: