【发布时间】:2015-07-06 11:51:59
【问题描述】:
我有一个包含列分隔值的文件,第一行在此处显示为具有真实数据的下一行的列标题。实际的列集比本示例中的要长得多,顺便说一句,这就是为什么我想自动化我需要做的工作。
main-cat ID AFFIL PERM FF PLAN
ACA yes EDU yes no no
ACA yes EDU no yes no
ACA yes EDU no no yes
我需要为每一行提取值不是“no”的那些列。此外,我希望在格式上打印这样一列:
列标题=行值
示例:上面的三个示例行应打印为:
main-cat=ACA ID=yes AFFIL=EDU PERM=yes
main-cat=ACA ID=yes AFFIL=EDU FF=yes
main-cat=ACA ID=yes AFFIL=EDU PLAN=yes
我最好的建议是无休止的条件列表(有很多列),说如果column1不是“no”,打印“main-cat =”+row-value,如果column 2不是“no” ,打印“ID=”+行值。但肯定有更有效的方法来实现这一目标吗?我使用 (g)awk 和/或 shell 脚本。 如有任何建议,将不胜感激。
【问题讨论】:
-
如果所有字段都是“否”,你想打印什么?空行?没有?还有什么?
-
好吧,我提前知道,有些字段的值总是不是 no。如果不是这种情况,我可能会提醒自己注意这一行:“警告:空行”。