awk 计算文件列中的行数
awk to count lines in column of file
我有一个大文件,我想使用 awk
来计算特定列 </code> 中的行数,在 <code>:
之前并且只计算 -uniq
条目,但似乎无法正确使用语法。谢谢:).
示例输入
chr1 955542 955763 + AGRN:exon.1 1 0
chr1 955542 955763 + AGRN:exon.1 2 0
chr1 955542 955763 + AGRN:exon.1 3 0
chr1 955542 955763 + AGRN:exon.1 4 1
chr1 955542 955763 + AGRN:exon.1 5 1
awk -F: ' NR > 1 { count += } -uniq' Input
期望输出
1
$ awk -F'[ \t:]+' '{a[]=1;} END{for (k in a)n++; print n;}' Input
1
-F'[ \t:]+'
这告诉 awk 使用空格、制表符或冒号作为字段分隔符。
a[]=1
当我们遍历每一行时,这会为遇到的每个 </code> 值添加一个条目到关联数组 <code>a
。
END{for (k in a)n++; print n;}
我们读完文件后,计算关联数组中的键数 a
并打印总数。
惯用的、可移植的 awk 方法:
$ awk '{sub(/:.*/,"",)} !seen[]++{unq++} END{print unq}' file
1
更简洁但仅供 gawk 使用的方法(由 length(array)
提供):
$ awk '{seen[]} END{print length(seen)}' file
1
我有一个大文件,我想使用 awk
来计算特定列 </code> 中的行数,在 <code>:
之前并且只计算 -uniq
条目,但似乎无法正确使用语法。谢谢:).
示例输入
chr1 955542 955763 + AGRN:exon.1 1 0
chr1 955542 955763 + AGRN:exon.1 2 0
chr1 955542 955763 + AGRN:exon.1 3 0
chr1 955542 955763 + AGRN:exon.1 4 1
chr1 955542 955763 + AGRN:exon.1 5 1
awk -F: ' NR > 1 { count += } -uniq' Input
期望输出
1
$ awk -F'[ \t:]+' '{a[]=1;} END{for (k in a)n++; print n;}' Input
1
-F'[ \t:]+'
这告诉 awk 使用空格、制表符或冒号作为字段分隔符。
a[]=1
当我们遍历每一行时,这会为遇到的每个
</code> 值添加一个条目到关联数组 <code>a
。END{for (k in a)n++; print n;}
我们读完文件后,计算关联数组中的键数
a
并打印总数。
惯用的、可移植的 awk 方法:
$ awk '{sub(/:.*/,"",)} !seen[]++{unq++} END{print unq}' file
1
更简洁但仅供 gawk 使用的方法(由 length(array)
提供):
$ awk '{seen[]} END{print length(seen)}' file
1