在包含大量不同 IP 的文件中对 uniq IP 进行排序和显示



我有一个包含许多行的文件,如下所示。

第一列将是IP,并且IP可以是重复的。其他列不必排序。如果第一列只是一个数字;排序-u k1,1";。但是,在这种情况下,IP有4个数字。你能帮助按IP的顺序对行进行排序,并删除重复的行,只列出具有唯一IP的行吗?

提前谢谢!

假设包含数据的文件名为data.txt,您可以执行:

awk '{print $1}' data.txt | sort | uniq
  • awk只保留第一列,即IP地址
  • sort:对IP进行排序
  • uniq:删除重复项

如果需要知道每个IP在文件中出现的次数,可以将选项-c添加到uniq中。

这应该可以单独对每列进行排序,并使用数字顺序:

awk '{print $1}' file.txt | sort -ut . -k1,1n -k2,2n -k 3,3n -k 4,4n

假设你想做的是根据IP地址进行排序,同时只根据IP地址删除重复的行,下面的排序和遍历排序文件以删除重复的代码应该有效:

#!/bin/bash
originalFile=/path/to/original/file
outputFile=/path/to/intermediate/file
cleanFile=/path/to/final/file
sort $originalFile > $outputFile
lastIP=""
while read -r line; do
words=("${line// / }")
if [ "${words[0]}" != "$lastIP" ]
then
printf "%sn" "$line" >> $cleanFile
fi
lastIP="${words[0]}"
done < $outputFile

最新更新