做一个awk然后是一个head命令+ bash

时间:2015-11-02 01:38:49

标签: bash awk head

这给了我重复次数和重复的次数

$ awk -F "\"*,\"*" '{print $2}' file.csv | sort | uniq -c | sort -nr | head -n 2
      4 12345
      3 56789

我想要做的是添加第一列(3 + 4)。如果我将上面的输出写入文件test,我可以这样做。我可以这样做:

$ awk -F" " '{print $1}' test
4
3
$ awk -F" " '{print $1}' test | paste -sd+
4+3
$ awk -F" " '{print $1}' test | paste -sd+ | bc
7

但我希望能够在一行中完成此操作,并且理想情况下不想写入文件,想了解以下内容无效的原因

awk -F "\"*,\"*" '{print $2}' file.csv | sort | uniq -c | sort -nr | head -n 2 | awk -F" " '{print $1}' | paste -sd+ | bc

我的第二个awk似乎不喜欢输入。

任何人都可以建议我这样做,以及我做错了什么?

EDIT1 - file.csv如下所示:

"Date","Number"
"2015-11-01","12345"
"2015-11-01","12345"
"2015-11-01","12345"
"2015-11-01","12345"
"2015-11-01","56789"
"2015-11-01","56789"
"2015-11-01","56789"

1 个答案:

答案 0 :(得分:0)

要求救援!

... | sort -nr | awk 'NR<=2{sum+=$1} END{print sum}'

你也可以在awk中选择前两行和求和。