دستور sort همون طور که از معنیش معلومه برایه ترتیب کردن حروف بر اساس حروف الفبا و همچنین ترتیب کردن اعداد بر اساس اعداد استفاده میشود
از جایی که اپشن هایه زیادی دارد من این جا فقط اونایی که از همه بیشتر مصرف میشوند و کار راه انداز هستن رو میگم
شکل کلی دستور
ساده ترین شکل دستور sort به شکل زیر هستش که به صورت پیش فرض ترتیب کردن رو بر اساس حروف انجام میدهدکد:sort [OPTION]... [FILE]...
برایه این مثال اول فایل زیر رو با محتویات زیر بسازید و ذخیره کنید
مثال :کد:alieblice@~/Desktop/sisi$ nano lili.txt X C d c a h g A G H K p برایه ذخیره شدن دکمه کنترل و ایکس رو فشار بدین و سپس دکمه y رو بزنین (( Ctrl+x )) alieblice@~/Desktop/sisi$
ترتیب بر اساس اعداد به وسیله n-کد:alieblice@~/Desktop/sisi$ sort lili.txt a A c C d g G h H K p X alieblice@~/Desktop/sisi$
برایه این کار فایل sisi.txt رو به روش بالا با محتویات زیر بسازین
یک فایل رو به دو صورت میشود به ترتیب اعداد کردکد:10 30 40 5 7 1 88 2 1390
1=
از این طریق اعداد فقط بر حصب عدد اولشون ترتیب میشن
مثال:
2=کد:alieblice@~/Desktop/sisi$ sort lili.txt 1 10 1390 2 30 40 5 7 88 alieblice@~/Desktop/sisi$
بر اساس ترتیب شمردن که احتیاج به اپشن n- دارد
مثال:
نکته : اگه خاستین بر عکس ترتیب بشود از اپشن r- استفاده کنین یعنی مثلا در ترتیب اعداد در مثال بالا اول 1390 بعد 88 وبعد 40 و بعد ....کد:alieblice@~/Desktop/sisi$ sort -n lili.txt 1 2 5 7 10 30 40 88 1390 alieblice@~/Desktop/sisi$
تعیین جدول
برایه تعیین جدول احتیاج به دو چیز داریم یک جدا کننده که به ما میگه چه جوری دو تا جدول از هم جدا میشوند و دیگری شماره جدول
در مثال هایه زیر از متن زیر استفاده شده است
به خط زیر توجه کنینکد:acl Safe_ports port 80 # http bin:x:2:2:bin:/bin:/bin/sh games:x:5:60:games:/usr/games:/bin/sh nobody:x:65534:65534:nobody:/nonexistent:/bin/sh acl Safe_ports port 777 # multiling http acl Safe_ports port 631 # cups acl Safe_ports port 873 ## rsync acl Safe_ports port 901 # SWAT alieblice:x:1000:1000:alieblice,,,:/home/alieblice:/bin/bash tia:x:1000:1000::/home/tia:/bin/bash
اگه در خط بالا نوع جدا کننده را : در نظر بگیریم خط بالا از 7 قسمت درست شده که ما اینجا به اونا جدول می گفتیمکد:alieblice:x:1000:1000:alieblice,,,:/home/alieblice:/bin/bash
در مثال زیر میگیم که خطوط رو بر اساس جدول 3وم و نوع جدا کننده : به ترتیب اعداد بکند
در مثال بالا t- برای تعیین جدا کننده و k- برایه تعیین جدول هستشکد:alieblice@~/Desktop/sisi$ sort -n -t: -k3 lili.txt acl Safe_ports port 631 # cups acl Safe_ports port 777 # multiling http acl Safe_ports port 80 # http acl Safe_ports port 873 ## rsync acl Safe_ports port 901 # SWAT bin:x:2:2:bin:/bin:/bin/sh games:x:5:60:games:/usr/games:/bin/sh alieblice:x:1000:1000:alieblice,,,:/home/alieblice:/bin/bash tia:x:1000:1000::/home/tia:/bin/bash nobody:x:65534:65534:nobody:/nonexistent:/bin/sh alieblice@~/Desktop/sisi$
اگه خاستین خروجی هایه تکراری پاک شوند از u- استفاده کنین
مثال :
همون طور که میبینین این خط به همراه تمام خط هایی که توش جدا کننده پیدا نشده به جز یکی حذف شدندکد:alieblice@~/Desktop/sisi$ sort -nu -t":" -k3 lili.txt acl Safe_ports port 80 # http bin:x:2:2:bin:/bin:/bin/sh games:x:5:60:games:/usr/games:/bin/sh alieblice:x:1000:1000:alieblice,,,:/home/alieblice:/bin/bash nobody:x:65534:65534:nobody:/nonexistent:/bin/sh alieblice@~/Desktop/sisi$
مثالی دیگر :کد:tia:x:1000:1000::/home/tia:/bin/bash
در مثال زیر جدا کننده رو یک فاصله (( space )) در نظر میگیریم
نکته :کد:alieblice@~/Desktop/sisi$ sort -t" " -k 4 -nu lili.txt bin:x:2:2:bin:/bin:/bin/sh acl Safe_ports port 80 # http acl Safe_ports port 631 # cups acl Safe_ports port 777 # multiling http acl Safe_ports port 873 ## rsync acl Safe_ports port 901 # SWAT alieblice@~/Desktop/sisi$
یکی از مشکلاتی که دستور sort دارد نوع جدا کننده هستش که نمیشه دو حرفی تعیین کرد یعنی مثلا چیزهایی مثل " :" ::" ":@" نمیشه تعیین کرد
منبع : LPIC-1_In_Nutshell_Oreilly_Edition3
ادرس دانلود:
http://ubuntuone.com/p/15HZ/






پاسخ با نقل قول