<ก่อนหน้านี้ | Contents | ถัดไป>
nl – เส้นจำนวน
การขอ nl โปรแกรมเป็นเครื่องมือที่ค่อนข้างลึกลับที่ใช้ในการทำงานง่ายๆ เป็นเส้นตัวเลข ในการใช้งานที่ง่ายที่สุด มันคล้ายกับ แมว -n:
[me@linuxbox ~]$ nl distros.txt | ศีรษะ
1 | SUSE | 10.2 | 12/07/2006 |
2 | Fedora | 10 | 11/25/2008 |
3 | SUSE | 11.0 | 06/19/2008 |
4 | อูบุนตู | 8.04 | 04/24/2008 |
5 | Fedora | 8 | 11/08/2007 |
6 | SUSE | 10.3 | 10/04/2007 |
7 | อูบุนตู | 6.10 | 10/26/2006 |
8 | Fedora | 7 | 05/31/2007 |
9 | อูบุนตู | 7.10 | 10/18/2007 |
10 | อูบุนตู | 7.04 | 04/19/2007 |
Like แมว, nl สามารถรับไฟล์หลายไฟล์เป็นอาร์กิวเมนต์บรรทัดคำสั่งหรืออินพุตมาตรฐานได้ อย่างไรก็ตาม, nl มีตัวเลือกมากมายและสนับสนุนรูปแบบการมาร์กอัปแบบดั้งเดิมจนถึงการนับประเภทที่ซับซ้อนมากขึ้น
nl รองรับแนวคิดที่เรียกว่า "หน้าตรรกะ" เมื่อกำหนดหมายเลข ซึ่งช่วยให้ nl รีเซ็ต (เริ่มต้นใหม่) ลำดับตัวเลขเมื่อกำหนดหมายเลข การใช้ตัวเลือกทำให้สามารถตั้งค่าหมายเลขเริ่มต้นเป็นค่าเฉพาะและรูปแบบได้ในระดับที่จำกัด เพจแบบลอจิคัลยังถูกแบ่งออกเป็นส่วนหัว เนื้อหา และส่วนท้าย ภายในแต่ละส่วนเหล่านี้ การกำหนดหมายเลขบรรทัดอาจถูกรีเซ็ตและ/หรือกำหนดรูปแบบที่แตกต่างกัน หากให้ nl หลายไฟล์ จะถือว่าไฟล์นั้นเป็นสตรีมข้อความเดียว ส่วนต่างๆ ในสตรีมข้อความระบุด้วยการมีมาร์กอัปที่ดูแปลกตาซึ่งเพิ่มเข้ามาในข้อความ:
ตารางที่ 21-1: nl Markup
ความหมายของมาร์กอัป
ความหมายของมาร์กอัป
- จุดเริ่มต้นของส่วนหัวของหน้าตรรกะ
\:\: จุดเริ่มต้นของเนื้อความของหน้าตรรกะ
\: จุดเริ่มต้นของส่วนท้ายของหน้าตรรกะ
องค์ประกอบมาร์กอัปแต่ละรายการข้างต้นต้องปรากฏตามลำพังในบรรทัดของตนเอง หลังจากประมวลผลองค์ประกอบมาร์กอัปแล้ว nl ลบออกจากสตรีมข้อความ
นี่คือตัวเลือกทั่วไปสำหรับ nl:
ตาราง 21-2: ตัวเลือก nl ทั่วไป
ตัวเลือกความหมาย
ตัวเลือกความหมาย
-b สไตล์ ตั้งค่าหมายเลขร่างกายเป็น สไตล์ที่นี่มี สไตล์ เป็นหนึ่งในสิ่งต่อไปนี้:
a = ตัวเลขทุกบรรทัด
t = ตัวเลขเฉพาะบรรทัดที่ไม่เว้นว่าง นี่คือค่าเริ่มต้น
น = ไม่มี
pregexp = เส้นตัวเลขเท่านั้นที่ตรงกับนิพจน์ทั่วไปพื้นฐาน
regexp
-f สไตล์ กำหนดหมายเลขท้ายกระดาษเป็น สไตล์. ค่าเริ่มต้นคือ n (ไม่มี)
-h สไตล์ กำหนดหมายเลขส่วนหัวเป็น สไตล์. ค่าเริ่มต้นคือ n (ไม่มี)
-i จำนวน ตั้งค่าการเพิ่มเลขหน้าเป็น จำนวน. ค่าเริ่มต้นคือหนึ่ง
-n รูป ตั้งค่ารูปแบบการเรียงลำดับเลขเป็น รูปโดยที่รูปแบบคือ:
ln = ชิดซ้ายโดยไม่มีศูนย์นำหน้า
rn = ถูกทำให้ถูกต้อง ไม่มีศูนย์นำหน้า นี่คือค่าเริ่มต้น
rz = ถูกทำให้ถูกต้อง โดยมีศูนย์นำหน้า
-p อย่ารีเซ็ตการกำหนดหมายเลขหน้าที่จุดเริ่มต้นของแต่ละหน้าตรรกะ
-s เชือก เพิ่ม เชือก ต่อท้ายหมายเลขแต่ละบรรทัดเพื่อสร้างตัวคั่น
ค่าเริ่มต้นคืออักขระแท็บเดียว
-v จำนวน ตั้งค่าหมายเลขบรรทัดแรกของแต่ละหน้าตรรกะเป็น จำนวน. ค่าเริ่มต้นคือหนึ่ง
-w ความกว้าง ตั้งค่าความกว้างของฟิลด์หมายเลขบรรทัดเป็น ความกว้าง. ค่าเริ่มต้นคือ 6
จริงอยู่ว่าอาจจะไม่เรียงเลขบ่อยแต่ก็ใช้ได้นะ nl เพื่อดูว่าเราจะรวมเครื่องมือต่างๆ เข้าด้วยกันเพื่อทำงานที่ซับซ้อนมากขึ้นได้อย่างไร เราจะต่อยอดจากงานของเราในบทก่อนหน้าเพื่อจัดทำรายงานการแจกจ่าย Linux เนื่องจากเราจะใช้ nlการใส่มาร์กอัปส่วนหัว/เนื้อหา/ส่วนท้ายจะเป็นประโยชน์ ในการทำเช่นนี้เราจะเพิ่มลงใน ความกระหายน้ำ สคริปต์จากบทที่แล้ว เมื่อใช้โปรแกรมแก้ไขข้อความ เราจะเปลี่ยนสคริปต์ดังต่อไปนี้และบันทึกเป็น distros-nl.sed:
# sed script เพื่อสร้างรายงานการแจกแจงลินุกซ์
1 ผม\
-
\
รายงานการกระจาย Linux\
\
ชื่อ Ver. ปล่อยแล้ว\
-
-
s/\([0-9]\{2\}\)\/\([0-9]\{2\}\)\/\([0-9]\{4\}\)$/\3-\1-\2/
$ เป็\
-
\
สิ้นสุดรายงาน
# sed script เพื่อสร้างรายงานการแจกแจงลินุกซ์
1 ผม\
-
\
รายงานการกระจาย Linux\
\
ชื่อ Ver. ปล่อยแล้ว\
-
-
s/\([0-9]\{2\}\)\/\([0-9]\{2\}\)\/\([0-9]\{4\}\)$/\3-\1-\2/
$ เป็\
-
\
สิ้นสุดรายงาน
สคริปต์ตอนนี้แทรก nl มาร์กอัปหน้าแบบลอจิคัลและเพิ่มส่วนท้ายที่ส่วนท้ายของรายงาน โปรดทราบว่าเราต้องเพิ่มแบ็กสแลชเป็นสองเท่าในมาร์กอัปของเรา เนื่องจากพวกมันไม่ได้ตีความว่าเป็นอักขระหลีกโดย ความกระหายน้ำ.
ต่อไป เราจะจัดทำรายงานที่ปรับปรุงแล้วโดยการรวม ประเภท, ความกระหายน้ำและ nl:
[me@linuxbox ~]$ sort -k 1,1 -k 2n distros.txt | sed -f distros-nl.s เอ็ด | nl
รายงานการกระจาย Linux
ชื่อ | ดู. | เผยแพร่ |
---- | ---- | -------- |
1 | Fedora | 5 | 2006-03-20 |
2 | Fedora | 6 | 2006-10-24 |
3 | Fedora | 7 | 2007-05-31 |
4 | Fedora | 8 | 2007-11-08 |
5 | Fedora | 9 | 2008-05-13 |
6 | Fedora | 10 | 2008-11-25 |
7 | SUSE | 10.1 | 2006-05-11 |
8 | SUSE | 10.2 | 2006-12-07 |
9 | SUSE | 10.3 | 2007-10-04 |
10 | SUSE | 11.0 | 2008-06-19 |
11 | อูบุนตู | 6.06 | 2006-06-01 |
12 | อูบุนตู | 6.10 | 2006-10-26 |
13 | อูบุนตู | 7.04 | 2007-04-19 |
14 | อูบุนตู | 7.10 | 2007-10-18 |
15 | อูบุนตู | 8.04 | 2008-04-24 |
16 | อูบุนตู | 8.10 | 2008-10-30 |
สิ้นสุดรายงาน
รายงานของเราเป็นผลมาจากท่อส่งคำสั่งของเรา อันดับแรก เราจัดเรียงรายการตามชื่อการแจกจ่ายและรุ่น (ฟิลด์ 1 และ 2) จากนั้นเราประมวลผลผลลัพธ์ด้วย ความกระหายน้ำเพิ่มส่วนหัวของพอร์ต (รวมถึงมาร์กอัปหน้าตรรกะสำหรับ nl) และส่วนท้าย สุดท้ายเราประมวลผลผลลัพธ์ด้วย nlซึ่งตามค่าเริ่มต้น จะกำหนดหมายเลขเฉพาะบรรทัดของสตรีมข้อความที่เป็นของส่วนเนื้อหาของหน้าตรรกะ
เราสามารถทำซ้ำคำสั่งและทดลองกับตัวเลือกต่างๆสำหรับ nl. สิ่งที่น่าสนใจได้แก่:
nl -n rz
nl -n rz
และ
nl -w 3 -s ' '
nl -w 3 -s ' '