nl - خطوط اعداد
La nl برنامه یک ابزار نسبتاً محرمانه است که برای انجام یک کار ساده استفاده می شود. خطوط را شماره گذاری می کند. در ساده ترین استفاده اش شبیه است cat -n:
[me@linuxbox ~]$ nl distros.txt | سر
1 | سوس | 10.2 | 12/07/2006 |
2 | کلاه نمدی مردانه | 10 | 11/25/2008 |
3 | سوس | 11.0 | 06/19/2008 |
4 | اوبونتو | 8.04 | 04/24/2008 |
5 | کلاه نمدی مردانه | 8 | 11/08/2007 |
6 | سوس | 10.3 | 10/04/2007 |
7 | اوبونتو | 6.10 | 10/26/2006 |
8 | کلاه نمدی مردانه | 7 | 05/31/2007 |
9 | اوبونتو | 7.10 | 10/18/2007 |
10 | اوبونتو | 7.04 | 04/19/2007 |
پسندیدن گربه, nl می تواند چندین فایل را به عنوان آرگومان های خط فرمان یا ورودی استاندارد بپذیرد. با این حال، nl تعدادی گزینه دارد و از شکل ابتدایی نشانه گذاری برای اجازه دادن به انواع پیچیده تر شماره گذاری پشتیبانی می کند.
nl هنگام شماره گذاری از مفهومی به نام "صفحات منطقی" پشتیبانی می کند. این به nl اجازه می دهد تا در هنگام شماره گذاری، دنباله عددی را بازنشانی کند (شروع دوباره). با استفاده از گزینهها، میتوان شماره شروع را روی یک مقدار خاص و تا حد محدودی قالب آن را تنظیم کرد. یک صفحه منطقی بیشتر به هدر، بدنه و پاورقی تقسیم می شود. در هر یک از این بخشها، شمارهگذاری خطوط ممکن است بازنشانی شود و/یا سبک متفاوتی به آن اختصاص داده شود. اگر به nl چندین فایل داده شود، آنها را به عنوان یک جریان متن در نظر می گیرد. بخشها در جریان متن با وجود نشانهگذاری نسبتاً عجیب و غریب اضافه شده به متن نشان داده میشوند:
جدول 21-1: نشانه گذاری nl
معنی نشانه گذاری
معنی نشانه گذاری
\:\:\: شروع هدر صفحه منطقی
\:\: شروع بدنه منطقی صفحه
\: شروع پاورقی صفحه منطقی
هر یک از عناصر نشانه گذاری فوق باید به تنهایی در خط خود ظاهر شوند. پس از پردازش یک عنصر نشانه گذاری، nl آن را از جریان متن حذف می کند.
در اینجا گزینه های رایج برای nl:
جدول 21-2: گزینه های رایج nl
معنی گزینه
معنی گزینه
-b سبک شماره گذاری بدنه را روی سبک، که در آن سبک یکی از موارد زیر است:
a = تعداد تمام خطوط
t = فقط تعداد خطوط غیر خالی. این پیش فرض است.
n = هیچ
pregexp = تعداد فقط خطوط منطبق با عبارت منظم اصلی
regexp.
-f سبک شماره گذاری پاورقی را روی سبک. پیش فرض n (هیچکدام) است.
-h سبک شماره گذاری سرصفحه را روی آن تنظیم کنید سبک. پیش فرض n (هیچکدام) است.
-i عدد افزایش شماره گذاری صفحه را روی آن تنظیم کنید عدد. پیش فرض یک است.
-n قالب قالب شماره گذاری را بر روی تنظیم می کند قالب، که در آن فرمت:
ln = سمت چپ موجه، بدون صفرهای ابتدایی.
rn = حق توجیه، بدون صفرهای ابتدایی. این پیش فرض است.
rz = راست توجیه شده، با صفرهای پیشرو.
-p شماره گذاری صفحه را در ابتدای هر صفحه منطقی تنظیم مجدد نکنید.
-s رشته اضافه کردن رشته تا انتهای هر خط یک جداکننده ایجاد کنید.
پیش فرض یک کاراکتر تک برگه است.
-v عدد شماره خط اول هر صفحه منطقی را روی آن تنظیم کنید عدد. پیش فرض یک است.
-w عرض عرض فیلد شماره خط را روی آن تنظیم کنید عرض. پیش فرض 6 است.
مسلماً، ما احتمالاً اغلب خطوط را شماره گذاری نمی کنیم، اما می توانیم استفاده کنیم nl تا ببینیم چگونه میتوانیم چندین ابزار را برای انجام کارهای پیچیدهتر ترکیب کنیم. ما بر اساس کار خود در فصل قبل برای تهیه گزارش توزیع لینوکس کار خواهیم کرد. از آنجایی که استفاده خواهیم کرد nl، اضافه کردن نشانه گذاری سرصفحه/بدنه/پانویس آن مفید خواهد بود. برای انجام این کار، آن را به آن اضافه می کنیم SED فیلمنامه از فصل آخر با استفاده از ویرایشگر متن خود، اسکریپت را به صورت زیر تغییر می دهیم و آن را به صورت ذخیره می کنیم distros-nl.sed:
# sed اسکریپت برای تولید گزارش توزیع لینوکس
1 من\
\\:\\:\\:\
\
گزارش توزیع لینوکس\
\
نام نسخه منتشر شد\
---- ---- --------\
\\:\\:
s/\([0-9]\{2\}\)\/\([0-9]\{2\}\)\/\([0-9]\{4\}\)$/\3-\1-\2/
$ a\
\\:\
\
پایان گزارش
# sed اسکریپت برای تولید گزارش توزیع لینوکس
1 من\
\\:\\:\\:\
\
گزارش توزیع لینوکس\
\
نام نسخه منتشر شد\
---- ---- --------\
\\:\\:
s/\([0-9]\{2\}\)\/\([0-9]\{2\}\)\/\([0-9]\{4\}\)$/\3-\1-\2/
$ a\
\\:\
\
پایان گزارش
اسکریپت اکنون درج می کند nl نشانه گذاری صفحه منطقی و اضافه کردن پاورقی در انتهای گزارش. توجه داشته باشید که ما مجبور شدیم بک اسلش ها را در نشانه گذاری خود دو برابر کنیم، زیرا آنها معمولاً به عنوان یک کاراکتر فرار تفسیر می شوند. SED.
در مرحله بعد، ما گزارش بهبود یافته خود را با ترکیب تولید می کنیم نوع, SEDو nl:
[me@linuxbox ~]$ مرتب سازی -k 1,1 -k 2n distros.txt | sed -f distros-nl.s ed | nl
گزارش توزیع لینوکس
نام | دیدن. | منتشر شد |
---- | ---- | -------- |
1 | کلاه نمدی مردانه | 5 | 2006-03-20 |
2 | کلاه نمدی مردانه | 6 | 2006-10-24 |
3 | کلاه نمدی مردانه | 7 | 2007-05-31 |
4 | کلاه نمدی مردانه | 8 | 2007-11-08 |
5 | کلاه نمدی مردانه | 9 | 2008-05-13 |
6 | کلاه نمدی مردانه | 10 | 2008-11-25 |
7 | سوس | 10.1 | 2006-05-11 |
8 | سوس | 10.2 | 2006-12-07 |
9 | سوس | 10.3 | 2007-10-04 |
10 | سوس | 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) مرتب می کنیم، سپس نتایج را با آن پردازش می کنیم SED، اضافه کردن هدر گزارش (شامل نشانه گذاری صفحه منطقی برای nl) و پاورقی. در نهایت، نتیجه را با پردازش می کنیم nl، که به طور پیش فرض فقط خطوط جریان متن را که به بخش بدنه صفحه منطقی تعلق دارند شماره گذاری می کند.
میتوانیم دستور را تکرار کرده و با گزینههای مختلف آزمایش کنیم nl. برخی از موارد جالب عبارتند از:
nl -n rz
nl -n rz
و
nl -w 3 -s " "
nl -w 3 -s " "