通过管道对 uniq 意外输出进行排序

通过管道对 uniq 意外输出进行排序

我有一个如下所示的文件:

"string",192.168.1.0,,TX,192.168.1.2,,,100,0,0,10,10,10,,
"string",192.168.1.0,,TX,192.168.1.1,,,100,0,0,10,10,10,,
"string",192.168.1.0,,TX,192.168.1.4,,,100,0,0,10,10,10,,
"string",192.168.1.0,,TX,192.168.1.2,,,100,0,0,10,10,10,,

我希望这个命令能提取第二个 IP 地址,并列出这个文件中该 IP 出现的次数。

cat originalFile.txt | awk -F "," '{print $5}' | sort | uniq -c > outputFile.txt

排序不正确。我希望输出文件如下所示(按第一列排列)

1 192.168.1.1
1 192.168.1.4
2 192.168.1.2

我尝试将排序部分更改为

sort -n -k1

我认为问题在于我在执行 uniq 之前进行了排序,但任何其他顺序似乎都会破坏该过程。现在我的解决方法是只运行两个这样的命令。

    cat originalFile.txt | awk -F "," '{print $5}' | sort | uniq -c > outputFile1.txt
    sort -n -k1 outputFile1.txt > outputFile2.txt

显然,使用临时文件并不理想,我确信我只需要稍微修改一下并将其按不同的顺序排列即可。任何帮助都非常感谢。

答案1

对 uniq 进行排序,然后对最终顺序进行排序:

cat originalFile.txt | awk -F "," '{print $5}' | sort | uniq -c | sort -n

相关内容