【发布时间】:2018-10-22 16:45:53
【问题描述】:
在 Unix 中,我打印字段中第一个字符的唯一值。我还打印了唯一字段长度的计数。 现在我想同时做这两件事。在 SQL 中很容易做到,但我不确定如何在 Unix 中使用 awk(或 grep、sed、...)来做到这一点。
打印第一个 UNIQ 前导字符
awk -F'|' '{print substr($61,1,1)}' file_name.sqf | sort | uniq
打印长度为 8、10、15 的字段计数
awk -F'|' 'NR>1 {count[length($61)]++} END {print count[8] ", " count[10] ", " count[15]}' file_name.sqf | sort | uniq
期望的输出
first char, length 8, length 10, length 15
a, 10, , 150
b, 50, 43, 31
A, 20, , 44
B, 60, 83, 22
以大写或小写“a”开头的字段长度永远不会是 10。
输入文件是一个 |没有标题的分隔 .sqf。该字段是 varChar 15。
样本输入
56789 | someValue | aValue | otherValue | 712345
46789 | someValue | bValue | otherValue | 812345
36789 | someValue | AValue | otherValue | 912345
26789 | someValue | BValue | otherValue | 012345
56722 | someValue | aValue | otherValue | 712345
46722 | someValue | bValue | otherValue | 812345
想要的输出
a: , , 2
b: 1, , 1
A: , , 1
B: , 1,
'a' 有两个长度为 15 的实例 'b' 有一个长度为 8 和 15 的实例 'A' 有一个长度为 15 的实例 'B' 有一个长度为 10 的实例
谢谢。
【问题讨论】:
-
请为您的问题添加示例输入 (file_name.sqf) 以获得所需的输出。
-
您从发布的示例输入中从哪里获得“a ..length 15 'b' ..length 8”?给定列中的每个字段都具有相同的长度?