میزبانی آنلاین رایگان برای ایستگاه های کاری

<قبلی | فهرست | بعدی>

tr

La tr برنامه استفاده می شود ترجمه کردن شخصیت ها. ما می توانیم این را به عنوان نوعی عملیات جستجو و جایگزینی مبتنی بر شخصیت در نظر بگیریم. نویسه‌گردانی فرآیند تغییر نویسه‌ها از یک الفبا به الفبای دیگر است. برای مثال، تبدیل کاراکترها از حروف کوچک به بزرگ، نویسه‌گردانی است. ما می توانیم چنین تبدیلی را با tr به شرح زیر است:


[me@linuxbox ~]$ echo "حروف کوچک" | tr az AZ

حروف کوچک

[me@linuxbox ~]$ echo "حروف کوچک" | tr az AZ

حروف کوچک


همان طور که ما می توانیم ببینیم، tr بر روی ورودی استاندارد عمل می کند و نتایج خود را بر روی خروجی استاندارد خروجی می دهد. tr دو آرگومان را می پذیرد: مجموعه ای از کاراکترها برای تبدیل و مجموعه ای از کاراکترهای متناظر برای تبدیل. مجموعه کاراکترها ممکن است به یکی از سه روش بیان شوند:

1. فهرست برشماری. مثلا، ABCDEFGHIJKLMNOPQRSTU VWXYZ

2. محدوده شخصیت. مثلا، AZ. توجه داشته باشید که گاهی اوقات این روش به دلیل ترتیب ترتیب محلی، با همان مسائلی مانند دستورات دیگر مواجه می شود و بنابراین باید با احتیاط از آن استفاده کرد.

3. کلاس های کاراکتر POSIX. مثلا، [:بالا:].

در بیشتر موارد، هر دو مجموعه کاراکتر باید طول یکسانی داشته باشند. با این حال، ممکن است مجموعه اول بزرگتر از مجموعه دوم باشد، به خصوص اگر بخواهیم چندین کاراکتر را به یک کاراکتر تبدیل کنیم:



[me@linuxbox ~]$ echo "حروف کوچک" | tr [:lower:] A

آآآآآآآآآآآآآآآآآآآآآآآآ

[me@linuxbox ~]$ echo "حروف کوچک" | tr [:lower:] A

آآآآآآآآآآآآآآآآآآآآآآآآ


علاوه بر آوانویسی، tr اجازه می دهد تا کاراکترها به سادگی از جریان ورودی حذف شوند. پیش از این در این فصل، مشکل تبدیل فایل‌های متنی MS-DOS به متن سبک یونیکس را مورد بحث قرار دادیم. برای انجام این تبدیل، کاراکترهای بازگشتی حامل باید از انتهای هر خط حذف شوند. این را می توان با tr به شرح زیر است:

tr -d '\r' dos_file > unix_file


جایی که dos_file فایلی است که باید تبدیل شود و unix_file نتیجه است. این شکل از فرمان از دنباله فرار استفاده می کند \r برای نشان دادن شخصیت بازگشت کالسکه. برای دیدن یک لیست کامل از دنباله ها و کلاس های شخصیت tr پشتیبانی می کند، سعی کنید:


[me@linuxbox ~]$ tr -- کمک

[me@linuxbox ~]$ tr -- کمک


ROT13: حلقه رسیور نه چندان سری

یک استفاده سرگرم کننده از tr انجام دادن است رمزگذاری ROT13 از متن ROT13 یک نوع رمزگذاری پیش پا افتاده بر اساس یک رمز جایگزین ساده است. فراخوانی ROT13 "رمزگذاری" سخاوتمندانه است. "مبهم سازی متن" دقیق تر است. گاهی اوقات روی متن برای پنهان کردن محتوای توهین آمیز بالقوه استفاده می شود. این روش به سادگی هر کاراکتر را 13 مکان بالاتر از الفبا حرکت می دهد. از آنجایی که این نیمی از 26 کاراکتر ممکن است، اجرای الگوریتم برای بار دوم روی متن، آن را به شکل اصلی خود باز می‌گرداند. برای انجام این رمزگذاری با tr:

پژواک "متن مخفی" | tr a-zA-Z n-za-mN-ZA-M

فرپرگ گرکگ

انجام همین روش برای بار دوم منجر به ترجمه می شود:

اکو "frperg grkg" | tr a-zA-Z n-za-mN-ZA-M

متن مخفی

تعدادی از برنامه های ایمیل و اخبار خوان های Usenet از رمزگذاری ROT13 پشتیبانی می کنند. ویکی پدیا حاوی مقاله خوبی در این زمینه است:

http://en.wikipedia.org/wiki/ROT13


tr می تواند ترفند دیگری را نیز انجام دهد. با استفاده از گزینه -s، tr می تواند نمونه های تکرار شده یک کاراکتر را "فشرده" (حذف) کند:



[me@linuxbox ~]$ اکو "aaabbbcccc" | tr -s ab

abccc

[me@linuxbox ~]$ اکو "aaabbbcccc" | tr -s ab

abccc


در اینجا ما یک رشته حاوی کاراکترهای تکراری داریم. با تعیین مجموعه "ab" به tr، موارد مکرر حروف را در مجموعه حذف می کنیم، در حالی که کاراکتری که در مجموعه ("c") وجود ندارد را بدون تغییر می گذاریم. توجه داشته باشید که کاراکترهای تکرار شونده باید کنار هم باشند. اگر نیستند:


[me@linuxbox ~]$ اکو "abcabcabc" | tr -s ab

abcabcabc

[me@linuxbox ~]$ اکو "abcabcabc" | tr -s ab

abcabcabc


فشردن اثری نخواهد داشت.


برترین سیستم عامل Cloud Computing در OnWorks: