私のkshスクリプトに次のタスクを追加する必要があります(OS - linux / solaris)。
次のファイルがあります
more test.txt
/etc/backup/app 172.1.120 172.110.120
/etc/backup/app 172.1.120.12 172.110.120.98
/etc/backup/app 192.1.120 192.120.120
/etc/backup/app 172.1.120.1 172.110.120.7
/var/log/df 193.23.2 193.23.2
/var/log/df 193.23.2.111 193.23.2.159
すべてのIPを見つける方法4オクテットファイルの先頭に異なるIP3オクテット
注 - IPは2番目のフィールドに基づいてソートされます。
要求ファイルの例(ソート後)
more test.txt
/etc/backup/app 172.1.120.12 172.110.120.98
/etc/backup/app 172.1.120.1 172.110.120.7
/var/log/df 193.23.2.111 193.23.2.159
/etc/backup/app 172.1.120 172.110.120
/etc/backup/app 192.1.120 192.120.120
/var/log/df 193.23.2 193.23.2
回避策は sort や ksh/awk/sed/perl oneliner... などを使って行うことができます。
ベストアンサー1
GNU awk
ここに必要な行があるとしましょう。
$ awk '{n=split($2,ip,".");if(n==4)print $0;else a[$2]=$0}END{n=asorti(a,b);for(i=1;i<=n;i++)print a[b[i]]}' file
/etc/backup/app 172.1.120.12 172.110.120.98
/etc/backup/app 172.1.120.1 172.110.120.7
/var/log/df 193.23.2.111 193.23.2.159
/etc/backup/app 172.1.120 172.110.120
/etc/backup/app 192.1.120 192.120.120
/var/log/df 193.23.2 193.23.2