我想总结“uniq -c”命令的出现输出。 我怎么能在命令行上这样做?
例如,如果我在输出中得到以下内容,我将需要250。
45 a4
55 a3
1 a1
149 a5
答案 0 :(得分:7)
awk '{sum+=$1} END{ print sum}'
答案 1 :(得分:2)
这应该可以解决问题:
awk '{s+=$1} END {print s}' file
或者只是通过
将其传输到awk
uniq -c whatever | awk '{s+=$1} END {print s}'
答案 2 :(得分:0)
对于每一行,将第一列的值添加到SUM,然后打印出SUM
的值 awk
是更好的选择
uniq -c somefile | awk '{SUM+=$1}END{print SUM}'
但您也可以使用bash
uniq -c somefile | while read num other
do
let SUM+=num;
done
echo $SUM
答案 3 :(得分:0)
要获得唯一行的总和,而不是 uniq -c | <somecommand>
,只需使用 uniq | wc -l
答案 4 :(得分:0)
uniq -c 比 awk 慢。就像真的很慢。
{mawk/mawk2/gawk} 'BEGIN { OFS = "\t" } { freqL[$1]++; } END { # modify FS for that
# column you want
for (x in freqL) { printf("%8s %s\n", freqL[x], x) } }' # to uniq -c upon
如果你的输入不像 100MB+ 那样大,那么加入后 gawk 就足够了
PROCINFO["sorted_in"] = "@ind_num_asc"; # gawk specific, just use gawk -b mode
如果它真的很大,那么使用mawk2然后pipe到to要快得多
{ mawk/mawk2 stuff... } | gnusort -t'\t' -k 2,2