سلام اگر فایلی دارید که شامل تعداد زیادی ip میباشد که هر کدام در یک خط و زیر هم آورده شده اند و این ip ها به ترتیب عددی منظم نیستند میتوانید آنها مرتب و به ترتیب بیاورید برای این منظور کافیست از دستور sort استفاده کنید :
آپشن n بیانگر نحوه sort کردن بر اساس عدد میباشد (از آنجایی که محتوای فایل ip بوده که numeric میباشد)
آپشن t بیانگر seprator (جدا کننده) مورد نظر در فایل شما میباشد از آنجایی که محتوای فایل ip بوده seprator نقطه (.) میباشد.
آپشن k هم نمایشگر یک پارامتر و یا مقداریست که چیدمان بر اساس آن صورت میگیرد که با توجه به دستوری که ما زدیم پارامترهایی رو مشخص کردیم که فرمت ip را تشکیل میدهد. با توجه به اینکه ip از چهار بخش تشکیل شده ما از چهار k استفاده کرده ایم.
برای مثال فرض کنید رنج ip ها زیر را در یک فایلی به نام serverip.txt ذخیره کردیم و میخواهیم با دستور بالا آنها را مرتب کنیم :
خروجی دستور بالا به شکل زیر خواهد بود :
اگر بخواهید خروجی رو در یک فایل ذخیره کنه از آپشن o استفاده کنید و خروجی در یک فایل ذخیره کنید بجای اینکه در ترمینال مشاهده کنید:
کد PHP:
sort -n -t. -k 1,1 -k 2,2 -k 3,3 -k 4,4 file.txt
آپشن t بیانگر seprator (جدا کننده) مورد نظر در فایل شما میباشد از آنجایی که محتوای فایل ip بوده seprator نقطه (.) میباشد.
آپشن k هم نمایشگر یک پارامتر و یا مقداریست که چیدمان بر اساس آن صورت میگیرد که با توجه به دستوری که ما زدیم پارامترهایی رو مشخص کردیم که فرمت ip را تشکیل میدهد. با توجه به اینکه ip از چهار بخش تشکیل شده ما از چهار k استفاده کرده ایم.
برای مثال فرض کنید رنج ip ها زیر را در یک فایلی به نام serverip.txt ذخیره کردیم و میخواهیم با دستور بالا آنها را مرتب کنیم :
192.168.20.30
192.168.20.10
192.168.1.50
192.168.1.7
192.168.1.90
172.16.16.150
172.16.16.200
172.16.16.13
10.10.0.5
10.10.10.10
12.148.19.20
21.18.22.0
92.1.60.3
192.168.20.10
192.168.1.50
192.168.1.7
192.168.1.90
172.16.16.150
172.16.16.200
172.16.16.13
10.10.0.5
10.10.10.10
12.148.19.20
21.18.22.0
92.1.60.3
خروجی دستور بالا به شکل زیر خواهد بود :
کد PHP:
asal@localhost:~$ sort -n -t. -k 1,1 -k 2,2 -k 3,3 -k 4,4 /home/serverip.txt
10.10.0.5
10.10.10.10
12.148.19.20
21.18.22.0
92.1.60.3
172.16.16.13
172.16.16.150
172.16.16.200
192.168.1.7
192.168.1.50
192.168.1.90
192.168.20.10
192.168.20.30
کد PHP:
asal@localhost:~$ sort -n -t. -k 1,1 -k 2,2 -k 3,3 -k 4,4 -o /tmp/output.txt /home/serverip.txt