おそらく、私はこれが可能であることを知っていますが、awk
今は解決策を思い出していません。
IP形式を変換する方法
10.1.1.1-10.1.1.3
10.100.100.11-10.100.100.31
到着
10.1.1.1-3
10.100.100.11-31
ここに私の試みがありますが、cut
実際に期待どおりに動作しません。
wolf@linux:~$ echo 10.1.1.1-10.1.1.3 | cut -d . -f 1,2,3,4
10.1.1.1-10
wolf@linux:~$
wolf@linux:~$ echo 10.100.100.11-10.100.100.31 | cut -d . -f 1,2,3,4
10.100.100.11-10
wolf@linux:~$
ベストアンサー1
以下は、共通のコンポーネント数に合わせて調整されたAWKを使用する一般的なソリューションです。
BEGIN {
FS = "-"
}
NF == 2 {
split($1, start, /\./)
split($2, end, /\./)
printf $1
for (i = 1; i <= length(start); i++) {
if (start[i] != end[i]) {
for (j = i; j <= length(end); j++)
printf "%s%s", (j > i ? "." : "-"), end[j]
print ""
next
}
}
print ""
}
これも同様の状況を処理して1.2.3.4-1.2.5.6
正しい範囲を印刷します。
1.2.3.4-5.6