4.3. ตวั กรอง 51
int main()
{
printf("Hello, world.\n");
return 0;
}
thep@anubis:~$ wc hello.c
8 10 77 hello.c
thep@anubis:~$ wc -l hello.c
8 hello.c
thep@anubis:~$ wc *.c
8 11 85 bye.c
8 10 77 hello.c
16 21 162 total
คุณสามารถส่ังนบั จำนวนไฟลใ์ นไดเรกทอรีได้
thep@anubis:~$ ls | wc -l
10
4.3.5 sort
คณุ สามารถเรียงลำดับข้อมลู ได้ด้วยคำส่งั sort
คำสัง่ sort – เรยี งลำดับบรรทัดตา่ งๆ ในไฟล์ข้อความ
รปู แบบ sort [ตวั เลอื ก] [file . . . ]
คำบรรยาย ตอ่ ไฟล์ทงั้ หมดท่ีกำหนดและเรยี งลำดบั บรรทัดออกทาง standard output ถา้ ไม่กำหนด
ไฟล์จะอา่ นขอ้ มูลจาก standard input
ตัวเลอื ก -k POS1[,POS2 ]
กำหนดคยี ์ท่ีใช้เรียงลำดับโดยเร่มิ จากฟลิ ด์ท่ี POS1 จนถึงฟิลด์ท่ี POS2 (เรม่ิ นบั จาก
1) เชน่ ‘-k2,3’ หมายถึงใช้ฟิลด์ท่ีสองและสามเป็นคีย์ หากไม่กำหนด POS2 จะ
หมายถงึ ใชต้ ัง้ แต่ฟิลด์ท่ี POS1 จนจบบรรทัดเป็นคีย์
-t delim กำหนดอกั ขระท่ใี ช้แบ่งฟิลดใ์ นไฟล์ (ค่าปกติหากไมร่ ะบุจะเป็น space หรอื tab)
-n ใหต้ คี วามคีย์เป็นตวั เลขก่อนเรยี ง
-r เรียงลำดบั ยอ้ นกลบั
-u เลือกเอาบรรทดั ที่ซำ้ กนั เพียงบรรทัดเดยี ว
ตัวอย่างเช่น มีไฟล์ขอ้ มูลตอ่ ไปน้ี
thep@anubis:~$ cat tel
6402 thep 0-1234-5678
52 บทท่ี 4. เครือ่ งมือประมวลผลไฟล์
9876 ott 0-9876-5432
4444 pruet 0-5555-5555
2847 chanop 0-6789-0123
เมอ่ื สั่ง sort โดยไม่ใสต่ ัวเลอื ก ก็หมายถงึ การเปรยี บเทียบทัง้ บรรทดั
thep@anubis:~$ sort tel
2847 chanop 0-6789-0123
4444 pruet 0-5555-5555
6402 thep 0-1234-5678
9876 ott 0-9876-5432
หากต้องการเรียงช่ือตามลำดับอกั ษรโดยอาศัยฟิลดท์ สี่ อง
thep@anubis:~$ sort -k2,2 tel
2847 chanop 0-6789-0123
9876 ott 0-9876-5432
4444 pruet 0-5555-5555
6402 thep 0-1234-5678
หรอื เรยี งยอ้ นลำดับอักษร
thep@anubis:~$ sort -k2,2r tel
6402 thep 0-1234-5678
4444 pruet 0-5555-5555
9876 ott 0-9876-5432
2847 chanop 0-6789-0123
ลองอกี สักตวั อย่าง สมมตวิ า่ คุณต้องการหาไดเรกทอรีที่กินเนอ้ื ทม่ี ากท่สี ดุ เรยี งตามลำดบั คำสั่ง du
ใหผ้ ลลัพธว์ ่า
thep@anubis:~$ du
6064 ./Download/nautilus
956 ./Download/metatheme
1700 ./Download/gtk2
8760 ./Download/gdm
928 ./Download/icon
316 ./Download/metacity
18728 ./Download
4 ./Mail
4 ./Projects
4 ./tmp
18780 .
4.3. ตัวกรอง 53
คุณต้องการเรียงลำดบั ตามฟลิ ด์แรกเป็นหลกั จากมากไปน้อย จากนัน้ ใช้ฟลิ ด์ที่สองเปรยี บเทียบตามลำดับ
อกั ษรถ้าฟิลดแ์ รกเทา่ กัน
thep@anubis:~$ du | sort -k1,1nr -k2,2
18780 .
18728 ./Download
8760 ./Download/gdm
6064 ./Download/nautilus
1700 ./Download/gtk2
956 ./Download/metatheme
928 ./Download/icon
316 ./Download/metacity
4 ./Mail
4 ./Projects
4 ./tmp
คำส่ัง sort น้ี จะมผี ลตามโลแคล LC COLLATE และ LC CTYPE ดังนั้น ถ้าคุณเซต็ ตวั แปรระบบ
ท้ังสอง หรือเซ็ต LC ALL เปน็ th TH และระบบของคุณสนับสนนุ โลแคลไทย (เช่น ด้วย GNU C
library 2.1.1 ขน้ึ ไป) คณุ ก็จะสามารถเรยี งลำดับคำไทยตามพจนานกุ รมฉบบั ราชบณั ฑติ ยสถานได้ และ
หากคุณต้องการการเรียงลำดับแบบ ASCII ธรรมดา คุณก็เซต็ โลแคลให้เป็น C เสีย
4.3.6 uniq
คำสั่ง uniq ใชก้ ำจัดบรรทัดซำ้ ในไฟลข์ อ้ ความทีเ่ รยี งลำดบั แลว้
คำสงั่ uniq – กำจัดบรรทัดซ้ำในไฟล์ขอ้ ความท่เี รยี งแล้ว
รูปแบบ uniq [ตวั เลือก] [input [output]]
คำบรรยาย กำจดั บรรทดั ซ้ำท่อี ยู่ตดิ กนั ใน input (หรือ standard input ถา้ ไม่ระบ)ุ และแสดง
ผลลัพธอ์ อกทาง output (หรือ standard output ถา้ ไมร่ ะบุ)
ตัวเลือก -c แสดงจำนวนบรรทดั ท่ีซำ้ ไว้ขา้ งหนา้ แตล่ ะบรรทัดด้วย
-d แสดงเฉพาะบรรทัดทซี่ ้ำเทา่ นั้น
-u แสดงเฉพาะบรรทดั ทีไ่ มซ่ ำ้ เทา่ น้ัน
เนอ่ื งจาก uniq จะกำจดั บรรทดั ซ้ำทอี่ ยู่ตดิ กันเท่าน้ัน การใช้ uniq กับไฟล์ที่ยังไม่เรียงลำดบั จึงยัง
มีโอกาสมีบรรทดั ซ้ำกันหลงเหลอื ในผลลัพธ์ ดังนั้น ถา้ คุณต้องการไม่ให้เหลือบรรทดั ซ้ำเลย คณุ ควรจะ
sort เสยี ก่อนสง่ ให้ uniq
สมมตวิ ่าคณุ มไี ฟล์ขอ้ มลู บทความน่าอา่ นซ่งึ ค่ันฟิลดด์ ้วย bar (|) ดังนี้
thep@anubis:~$ cat readings
Eric Raymond|How To Become A Hacker
Eric Raymond|The Cathedral and the Bazaar
54 บทที่ 4. เครือ่ งมอื ประมวลผลไฟล์
Havoc Pennington|Working on Free Software
Havoc Pennington|Free software maintenance: Adding Features
Advogato|Advogato’s Number: Advice for young free software developers
Richard Stallman|The GNU Project
Richard Stallman|The Free Software Definition
Richard Stallman|Why GNU/Linux?
Richard Stallman|We Can Put an End to Word Attachments
Open Source Initiative|The Open Source Definition
Robert Chassel|Making a Living with Free Software
Andy Tai|Free Software: Hackers Comeback
Richard Stallman|The GNU Manifesto
Richard Stallman|Why Software should not have owners
Richard Stallman|Copyleft: Pragmatic Idealism
Eric Raymond|Homesteading the Noosphere
คุณตัดเอาเฉพาะชือ่ ผู้แตง่ ดว้ ยคำสั่ง cut (เราจะพดู ถงึ คำสงั่ cut โดยละเอียดในหวั ข้อ 4.3.8 ในท่ีน้ีขอ
ใหเ้ ชอื่ ว่าคำสัง่ นสี้ ามารถตัดเอาเฉพาะฟิลดแ์ รกออกมาได้ไปก่อน)
thep@anubis:~$ cut -d "|" -f1 readings
Eric Raymond
Eric Raymond
Havoc Pennington
Havoc Pennington
Advogato
Richard Stallman
Richard Stallman
Richard Stallman
Richard Stallman
Open Source Initiative
Robert Chassel
Andy Tai
Richard Stallman
Richard Stallman
Richard Stallman
Eric Raymond
หากใช้คำสัง่ uniq เพอ่ื ตัดช่ือซำ้ โดยตรง คุณจะยงั ได้ชื่อซำ้ หลงเหลืออยู่
thep@anubis:~$ cut -d "|" -f1 readings | uniq
Eric Raymond
Havoc Pennington
Advogato
4.3. ตวั กรอง 55
Richard Stallman
Open Source Initiative
Robert Chassel
Andy Tai
Richard Stallman (ซ้ำ)
Eric Raymond (ซำ้ )
คุณจึงควร sort กอ่ น uniq เพือ่ ท่บี รรทดั ซ้ำจะไดม้ าอยตู่ ิดกัน
thep@anubis:~$ cut -d "|" -f1 readings | sort | uniq
Advogato
Andy Tai
Eric Raymond
Havoc Pennington
Open Source Initiative
Richard Stallman
Robert Chassel
หรืออกี วิธหี นึ่งคอื ใช้ตัวเลือก -u (uniq) กับคำส่งั sort โดยตรง
thep@anubis:~$ cut -d "|" -f1 readings | sort -u
Advogato
Andy Tai
Eric Raymond
Havoc Pennington
Open Source Initiative
Richard Stallman
Robert Chassel
ในตัวอยา่ งข้างตน้ คุณอาจเหน็ ว่าผลของคำสงั่ “sort | uniq” กบั “sort -u” น้ันเหมอื นกัน
แต่อยา่ งไรก็ดี ผลจะต่างกนั ถ้ามีการเลอื กใช้คยี ์ในคำสั่ง sort โดยถา้ เทยี บคีย์ของสองบรรทดั แล้วได้เทา่
กัน sort จะถอื ว่าสองบรรทัดน้นั ซำ้ กนั แม้ว่าส่วนอนื่ ของบรรทัดจะไม่ได้เหมือนกนั กต็ าม พิจารณาผล
ของการสง่ั ต่อไปนี้
thep@anubis:~$ sort -t "|" -k1,1 readings | uniq
Advogato|Advogato’s Number: Advice for young free software developers
Andy Tai|Free Software: Hackers Comeback
Eric Raymond|Homesteading the Noosphere
Eric Raymond|How To Become A Hacker
Eric Raymond|The Cathedral and the Bazaar
Havoc Pennington|Free software maintenance: Adding Features
Havoc Pennington|Working on Free Software
Open Source Initiative|The Open Source Definition
56 บทที่ 4. เคร่ืองมอื ประมวลผลไฟล์
Richard Stallman|Copyleft: Pragmatic Idealism
Richard Stallman|The Free Software Definition
Richard Stallman|The GNU Manifesto
Richard Stallman|The GNU Project
Richard Stallman|We Can Put an End to Word Attachments
Richard Stallman|Why GNU/Linux?
Richard Stallman|Why Software should not have owners
Robert Chassel|Making a Living with Free Software
เทียบกับผลของคำส่งั sort เหมอื นเดมิ แต่เพมิ่ ตัวเลอื ก -u แทนการใช้ uniq
thep@anubis:~$ sort -u -t "|" -k1,1 readings
Advogato|Advogato’s Number: Advice for young free software developers
Andy Tai|Free Software: Hackers Comeback
Eric Raymond|How To Become A Hacker
Havoc Pennington|Working on Free Software
Open Source Initiative|The Open Source Definition
Richard Stallman|The GNU Project
Robert Chassel|Making a Living with Free Software
ซึง่ จะเห็นวา่ เปน็ การพยายาม unique ฟิลดผ์ ู้แตง่ โดยเลอื กบรรทดั อยา่ งสมุ่ (ขึ้นอยู่กับการทำงานของอลั
กอริทมึ ที่ใช้เรียงลำดบั ว่าจะเจอบรรทัดไหนกอ่ น) มาหนงึ่ บรรทดั แทนผู้แตง่ แตล่ ะคน (กรณีอยา่ งน้ีเรยี ก
ว่าคียไ์ มส่ มบูรณ์ทไ่ี ม่สามารถแยก record ต่างๆ ออกจากกันได้)
4.3.7 tee
เรามาสลบั ฉากดว้ ยคำสง่ั เบาๆ ท่ีมีประโยชน์พอควรคำสั่งหนึ่ง ท่ีชว่ ยให้คุณสามารถดกั ขอ้ มลู ในทอ่ ที่สง่
ระหว่างโปรเซสได้ โดยตอ่ ท่อรูปตัวที (T) แทรกกลางเขา้ ไป คำสัง่ ท่ีทำหนา้ ทเ่ี ชน่ น้ีคอื tee
คำสั่ง tee – อา่ น standard input และสง่ ผ่านออกทาง standard output และไฟล์
รูปแบบ tee [ตัวเลือก] [file . . . ]
คำบรรยาย กอ็ ปป้ี standard input ไปยัง standard output และไฟล์ทก่ี ำหนด
ตัวเลือก -a เขยี นขอ้ มลู ตอ่ ท้ายไฟล์แทนการเขยี นทบั
สมมติวา่ จากไฟล์ readings ในหวั ข้อท่ีแลว้ คณุ ใช้คำส่งั cut ตดั ฟิลด์ผู้แตง่ ออกมาแลว้ สั่งตอ่
ด้วย “sort -u | wc -l” เพือ่ นับจำนวนผู้แต่งทง้ั หมด แต่คุณตอ้ งการเกบ็ รายช่อื ผู้แตง่ ที่ได้ไว้ดว้ ย
คุณสามารถแทรกคำสั่ง tee ระหว่างทางได้
thep@anubis:~$ cut -d "|" -f1 readings | sort -u | tee authors \
| wc -l
4.3. ตวั กรอง 57
7
thep@anubis:~$ cat authors
Advogato
Andy Tai
Eric Raymond
Havoc Pennington
Open Source Initiative
Richard Stallman
Robert Chassel
4.3.8 cut และ paste
คำส่งั cut และ paste จะทำงานกับไฟล์ในแนวด่งิ คำส่งั cut ใช้ตดั เฉพาะฟิลด์ที่ตอ้ งการออกมาจาก
ทุกบรรทัดในไฟล์ ส่วนคำสง่ั paste ใช้ตอ่ ไฟล์ทีแ่ ยกฟิลดน์ ั้นเข้ามาเปน็ ไฟลเ์ ดียว
คำส่ัง cut – เลอื กคอลัมน์ที่ต้องการออกมาจากไฟล์
รูปแบบ cut [ตวั เลือก] [file . . . ]
คำบรรยาย เลือกคอลัมน์ที่ตอ้ งการจากไฟล์ (กำหนดได้มากกวา่ หนึง่ ไฟล์ หรือเลือกจาก standard
input ถ้าไมร่ ะบ)ุ แล้วเขยี นออกทาง standard output โดยเลือกไดส้ ามแบบ คอื เลอื กเป็นไบต์
(ด้วย -b) เลือกเปน็ อักขระ (ด้วย -c) หรอื เลอื กเปน็ ฟิลด์ (ดว้ ย -f)
ตัวเลอื ก -b list เลอื กไบตท์ ีต่ ้องการ
-c list เลอื กอกั ขระท่ตี ้องการ (อาจจะตา่ งจาก -b ในภาษาที่อกั ขระยาวกวา่ หนง่ึ ไบต์)
-f list เลือกฟลิ ด์ท่ตี อ้ งการ
การระบุส่วนทตี่ ้องการดว้ ย list ในตวั เลอื ก -b, -c และ -f จะระบุดว้ ยตัวเลขลำดับ
ทีต่ ้องการ (เร่มิ นบั จาก 1) หรอื เป็นชว่ งในรูปแบบ m-n กไ็ ด้ และสามารถละ m หรอื n
สว่ นใดสว่ นหนงึ่ ได้ โดย -n หมายถงึ 1-n และ m- หมายถึงตั้งแต่ m ถงึ ท้ายบรรทัด
-d delim กำหนดตัวค่นั ฟลิ ดเ์ ป็น delim (ใชส้ ำหรับตวั เลือก -f)
-s ตดั บรรทดั ทไ่ี ม่มีตัวคน่ั ฟลิ ดป์ รากฏทิ้ง (ใช้สำหรบั ตัวเลือก -f)
เราได้เห็นตวั อย่างการใช้ cut ตัดฟิลด์ไปแลว้ ในหัวขอ้ 4.3.5 และ 4.3.6 ซึง่ น่าจะเป็นกรณีที่พบบอ่ ย
ทสี่ ุด
อย่างไรกด็ ี หากคุณต้องการหาอักษรนำของชือ่ ตน้ ของผู้แตง่ ทุกคน คุณสามารถใช้ cut ตัดได้
เชน่ กัน
thep@anubis:~$ cut -b1 readings
E
E
H
H
A
58 บทที่ 4. เคร่อื งมอื ประมวลผลไฟล์
R
R
R
R
O
R
A
R
R
R
E
คำส่งั paste – รวมบรรทดั ของชุดของไฟล์
รูปแบบ paste [ตัวเลือก] [file . . . ]
คำบรรยาย รวมบรรทดั ตา่ งๆ ของชดุ ของไฟล์ที่กำหนด (หากไม่กำหนด หรอื ใช้ - แทนชื่อไฟล์ จะ
หมายถึง standard input) ตามลำด£ับขนาน กันไปในแตล่ ะบรรทัด โดยคัน่ สว่ นของแตล่ ะไฟล์
ดว้ ยชุด delimiter ทีก่ ำหนด (หรอื ¢TAB ¡หากไมก่ ำหนดเป็นอยา่ งอ่ืน)
ตัวเลือก -d delimiters ใช้ชดุ อกั ขระใน delimiters ตามลำดบั เป็นตัวคน่ั ระหว่างฟลิ ด์
กลา่ วคือ ตวั แรกค่นั ระหวา่ งฟลิ ด์แรกกบั ฟลิ ด์ท่ีสอง ตวั ท่ีสองคัน่ ระหวา่ งฟิลด์ท่ีสอง
กบั ฟิลด์ที่สาม ฯลฯ และย้อนกลับมาใช้ตัวแรกใหม่ถา้ delimiters สั้นกว่าจำนวน
delimiter ท่ตี อ้ งการ
-s รวมไฟลแ์ บบหน่งึ ไฟลต์ อ่ หนึง่ บรรทดั แทนการรวมบรรทดั แบบขนาน
-f หยุดเมอ่ื สดุ ไฟลใ์ ดไฟลห์ นง่ึ
สมมตวิ ่ามีไฟลข์ ้อมูลสองไฟลด์ งั นี้
thep@anubis:~$ cat id
1
2
thep@anubis:~$ cat name
bruce
richard
eric
เม่อื paste ตามปกติ
th£ep@an ubis:~$ paste id name
1 ¢£TAB ¡ bruce
2£ ¢TAB ¡ richard
¢TAB ¡ eric
4.3. ตวั กรอง 59
เมื่อ paste โดยกำหนด delimiters
thep@anubis:~$ paste -d ’!@’ id name id
1!bruce@1
2!richard@2
!eric@
เม่อื paste แบบ serial
thep£@anub is:~$ paste -s id name
1 ¢TA£B ¡ 2 £
bruce ¢TAB ¡ richard ¢TAB ¡ eric
เมื่อ paste แบบหยุดทีไ่ ฟลแ์ รกทส่ี ้นิ สุด
th£ep@an ubis:~$ paste -f id name
1 £¢TAB ¡ bruce
2 ¢TAB ¡ richard
4.3.9 comm
คำส่งั comm จะช่วยคุณเปรียบเทียบไฟล์สองไฟล์ที่เรียงลำดับแลว้ ได้ โดยคดั แยกบรรทดั ที่มีเหมอื นกนั
ออกจากบรรทัดทไี่ มเ่ หมือนกัน โดยแยกเปน็ สามกอง
คำส่งั comm – เทียบไฟลส์ องไฟล์ทเ่ี รยี งแล้วบรรทดั ตอ่ บรรทดั
รปู แบบ comm [ตวั เลอื ก] file1 file2
คำบรรยาย เปรียบเทยี บไฟล์ที่เรียงแลว้ สองไฟล์บรรทดั ตอ่ บรรทัด คดั แยกออกเป็นสามคอลมั น์
บรรทดั ท่ีมีเฉพาะในไฟล์แรกอยู่คอลมั น์แรก บรรทดั ที่มีเฉพาะในไฟล์ท่ีสองอ£ยู่คอลัม น์ท่ีสอง
และบรรทัดท่ีมีในท้ังสองไฟล์อยู่คอลัมน์ที่สาม คอลัมน์จะถกู แยกกนั ด้วย ¢TAB ¡ หน่ึงตวั
ผลลัพธแ์ ตล่ ะบรรทดั จะมีขอ้ มูลเพียงคอลัมนเ์ ดยี วเท่าน้นั คอลัมน์ที่เหลือจะวา่ งเปล่า
ตัวเลอื ก -1 ไมแ่ สดงคอลมั น์ที่ 1
-2 ไม่แสดงคอลมั นท์ ่ี 2
-3 ไมแ่ สดงคอลัมนท์ ่ี 3
สมมติว่า เรามไี ฟลส์ องไฟล์ที่เรยี งลำดบั แลว้ ดังนี้
thep@anubis:~$ cat gnome
hp
miguel
otaylor
timj
60 บทท่ี 4. เครื่องมือประมวลผลไฟล์
tml
thep@anubis:~$ cat rh
drepper
hp
otaylor
เม่อื สงั่ เปรียบเทยี บไฟล์ทงั้ สองดว้ ย comm
thep@anubis:~$ comm gnome rh
drepper
hp
miguel
otaylor
timj
tml
จะเห็นว่า คำท่ีปรากฏในทง้ั สองไฟล์ คือ hp และ otaylor จะถูกแยกไวค้ อลมั นท์ ส่ี าม สว่ นท่เี หลอื ถูก
แยกไว้ในคอลัมน์แรกสำหรับไฟล์แรก และคอลมั น์ที่สองสำหรับไฟล์ที่สอง หากตอ้ งการแค่บางคอลัมน์
เราก็ส่ังระงบั คอลัมนท์ ่ีไม่ต้องการได้
thep@anubis:~$ comm -3 gnome rh
drepper
miguel
timj
tml
thep@anubis:~$ comm -12 gnome rh
hp
otaylor
ทนี ี้ มาทำอะไรท่ีเปน็ เรอ่ื งเป็นราวดกี วา่ สมมติวา่ คุณมไี ฟลเ์ ก็บ e-mail address ท่แี ยกออกมาได้จาก
ไฟล์อนื่
thep@anubis:~$ cat devlist
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
คณุ ต้องการตรวจว่า ใครมีชื่อในไฟล์ gnome บา้ ง กอ่ นอนื่ คุณต้อง cut เอาแต่ชอ่ื ออกมาก่อน แล้ว
sort กอ่ น comm เอาเฉพาะบรรทัดทซ่ี ำ้ กนั
4.4. ส่งทา้ ย 61
thep@anubis:~$ cut -d ’@’ -f1 devlist | sort | comm -12 - gnome
hp
miguel
otaylor
timj
และใครไมอ่ ย่บู ้าง ก็ทำเช่นเดิม เพยี งแต่เลอื กเอาเฉพาะบรรทัดทไ่ี ม่มีในไฟล์ gnome
thep@anubis:~$ cut -d ’@’ -f1 devlist | sort | comm -23 - gnome
iliad
rms
สงั เกตการใช้ ‘-’ แทน standard input ในคำสัง่ comm
4.4 สง่ ทา้ ย
ในบทน้ีเราได้ทราบถึงเคร่อื งมอื ตา่ งๆ ของยนู ิกซ์ในการประมวลผลข้อมูลเปน็ สายงานผา่ น pipe แต่ความ
สามารถในการประกอบเครอ่ื งมือใหม่ของยูนกิ ซ์ยังไม่จบลงแคน่ ี้ เชลล์ของยูนิกซ์อนุญาตให้คณุ ใช้คำส่ัง
เหล่านี้เขยี นเป็นโปรแกรมใหม่ขน้ึ มาเลยทเี ดียว ซง่ึ หากคณุ ค้นุ เคยกับ batch file ของดอสหรอื วนิ โดวส์
มาแล้วละ่ ก็ คณุ จะได้พบความยืดหย่นุ อยา่ งที่ไม่เคยพบมาก่อนในเชลล์ของยนู กิ ซ์ เพราะมันไม่ใช่ฉบบั ย่อ
ท่ีจำกัดจำเข่ียเหมือนทค่ี ณุ คนุ้ เคยอกี ต่อไป