【发布时间】:2013-07-07 15:56:04
【问题描述】:
我有一个管道 | 分隔文件。
文件:
106232145|"medicare"|"medicare,medicaid"|789
我想计算每行中的字段数。我试过下面的代码
代码:
awk -F '|' '{print NF-1}'
这会将结果返回为 5 而不是 4。这是因为 awk 将“medicare|medicaid”作为两个不同的字段而不是一个字段
【问题讨论】:
-
我能想到你得到 5 而不是 4 的唯一方法是,如果你真的做了
awk -F\" ...(或者代替双引号,出现4次的其他字符之一在字符串中,例如d或i...)。事实上,使用NF-1,你应该得到 3 代替... -
但是您的示例不包含“medicare|medicaid” ??
-
如果您的数据可以在引用的字段值中包含分隔符,那么您需要一个专门的 CSV 样式解析器。很有可能
csvfix可以满足您的需求。另见Linux tool to parse CSV files。有 Perl 模块可以提供帮助; Python 和 Ruby 很可能也有可以提供帮助的模块。