
دستور sort همون طور که از معنیش معلومه برایه ترتیب کردن حروف بر اساس حروف الفبا و همچنین ترتیب کردن اعداد بر اساس اعداد استفاده میشود
از جایی که اپشن هایه زیادی دارد من این جا فقط اونایی که از همه بیشتر مصرف میشوند و کار راه انداز هستن رو میگم
شکل کلی دستور
کد:
sort [OPTION]... [FILE]...
ساده ترین شکل دستور sort به شکل زیر هستش که به صورت پیش فرض ترتیب کردن رو بر اساس حروف انجام میدهد
برایه این مثال اول فایل زیر رو با محتویات زیر بسازید و ذخیره کنید
کد:
alieblice@~/Desktop/sisi$ nano lili.txt
X
C
d
c
a
h
g
A
G
H
K
p
برایه ذخیره شدن دکمه کنترل و ایکس رو فشار بدین و سپس دکمه y رو بزنین (( Ctrl+x ))
alieblice@~/Desktop/sisi$
مثال :
کد:
alieblice@~/Desktop/sisi$ sort lili.txt
a
A
c
C
d
g
G
h
H
K
p
X
alieblice@~/Desktop/sisi$
ترتیب بر اساس اعداد به وسیله n-
برایه این کار فایل sisi.txt رو به روش بالا با محتویات زیر بسازین
کد:
10
30
40
5
7
1
88
2
1390
یک فایل رو به دو صورت میشود به ترتیب اعداد کرد
1=
از این طریق اعداد فقط بر حصب عدد اولشون ترتیب میشن
مثال:
کد:
alieblice@~/Desktop/sisi$ sort lili.txt
1
10
1390
2
30
40
5
7
88
alieblice@~/Desktop/sisi$
2=
بر اساس ترتیب شمردن که احتیاج به اپشن n- دارد
مثال:
کد:
alieblice@~/Desktop/sisi$ sort -n lili.txt
1
2
5
7
10
30
40
88
1390
alieblice@~/Desktop/sisi$
نکته : اگه خاستین بر عکس ترتیب بشود از اپشن r- استفاده کنین یعنی مثلا در ترتیب اعداد در مثال بالا اول 1390 بعد 88 وبعد 40 و بعد ....
تعیین جدول
برایه تعیین جدول احتیاج به دو چیز داریم یک جدا کننده که به ما میگه چه جوری دو تا جدول از هم جدا میشوند و دیگری شماره جدول
در مثال هایه زیر از متن زیر استفاده شده است
کد:
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
به خط زیر توجه کنین
کد:
alieblice:x:1000:1000:alieblice,,,:/home/alieblice:/bin/bash
اگه در خط بالا نوع جدا کننده را : در نظر بگیریم خط بالا از 7 قسمت درست شده که ما اینجا به اونا جدول می گفتیم
در مثال زیر میگیم که خطوط رو بر اساس جدول 3وم و نوع جدا کننده : به ترتیب اعداد بکند
کد:
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$
در مثال بالا t- برای تعیین جدا کننده و k- برایه تعیین جدول هستش
اگه خاستین خروجی هایه تکراری پاک شوند از 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/