ファイルで冗長IPを見つけるための最良の方法は何ですか? (このスクリプトにはkshスクリプトがあり、冗長IPを検証する関数を作成する必要があります。)
たとえば、config_IP.txt ファイルに IP - 192.1926.23.52 が 2 回存在する場合は、「duplicate IP - xxx.xxx.xxx.xxx」を印刷する必要があります。
- ソリューションはkshまたはperl oneliner、sed、awkなどを使用できます。
ファイルの種類は次のとおりです。
追加のconfig_IP.txt
# NETWORK adminstration
192.192.23.150 192.192.23.120
192.192.23.152 192.192.23.52
192.192.23.153 192.192.23.53
192.192.23.154 192.192.23.54
#NETWORK private
192.192.23.170 192.192.23.122
192.192.23.172 192.192.23.126
192.192.23.174 192.192.23.123
192.192.23.177 192.192.23.121
# NETWORK oracle internal
152.3.4.12 152.3.4.12
152.3.4.14 152.3.4.16
# NETWORK oracle ext
152.3.4.10 152.3.4.19
答え1
質問を正しく理解しているかどうかはわかりませんが、上記のファイルで重複するIPを見つけるには、1行に1つのIPを入力して実行すると、各行のsort
前uniq -c
に同じ数の行が報告されます。
cat config_IP.txt | sed "s/\s\s*/\n/g" | sort | uniq -c
このファイルに基づいて他のIPを確認するには、次のようにグループ化できますcat
。
( cat config_IP.txt; echo "12.34.56.78 90.101.121.131" ) \
| sed "s/\s\s*/\n/g" | sort | uniq -c
grep
ソートを開始する前に、IPアドレスを含まない行をフィルタリングするエントリを追加することもできます。
答え2
次のようになります(同じ行にあるIPだけでなく、ファイル全体のIPを確認するとします)。
awk '/^[0-9]/{for(i=1;i<=NF;i++)if(a[$i]++==1) print "Duplicate IP : ",$i;}' file
答え3
この試み:
cat config_IP.txt|egrep -v '^#|^$'|awk '{if($1==$2){print "Duplicate IP - "$1}}'