在Unix中,我正在为字段中的第一个字符打印唯一值。我还在打印唯一字段长度的计数。 现在,我想同时做这两个事情。在SQL中很容易做到,但是我不确定在awk(或grep,sed等)中如何在Unix中做到这一点。
打印第一个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的实例
谢谢。
答案 0 :(得分:0)
我认为您需要一个更好的示例输入文件,但是我想这就是您要寻找的
opener
请注意,由于所有长度均为6,因此我打印的是8,而不是8。使用正确的数据,您应该能够得到期望的输出。但是请注意,该顺序不会保留。