خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را


آشنایی با دستور tr در لینوکس

آشنایی با دستور tr در لینوکس
tr یک ابزار خط فرمان در سیستم های لینوکس و یونیکس است که کاراکترها را از ورودی translate، delete و فشرده می کند و نتیجه را در خروجی استاندارد می نویسد.

سیستم یکپارچۀ سازمانی راهکار
دستور tr می تواند عملیاتی مانند حذف کاراکترهای تکراری، تبدیل حروف بزرگ به حروف کوچک و جایگزینی و حذف کاراکترهای بیسیک را انجام دهد. به طور معمول، از tr در ترکیب با دستورات دیگر از طریق pipe استفاده می شود.


در این آموزش نحوه استفاده از دستور tr را از طریق مثال های مختلف به شما نشان خواهیم داد.

How to Use the tr Command

Syntax کلی دستور tr بصورت زیر می باشد:

tr OPTION... SET1 [SET2]

tr دو مجموعه(SET) کاراکتر معمولاً با طول یکسان را می پذیرد و کاراکترهای مجموعه اول را با کاراکترهای مربوط به مجموعه دوم جایگزین می کند. SET اساساً رشته‌ای از کاراکترها است، از جمله کاراکترهای خاص که دارای بک اسلش هستند.
در مثال زیر، tr با جایگزین کردن کاراکترهای مجموعه اول با کاراکترهای منطبق از مجموعه دوم، همه کاراکترهای ورودی (linuxize) را جایگزین می کند.

echo 'linuxize' | tr 'lin' 'red'

و هر l با r، i با e و n با d جایگزین می شود:

reduxeze

مجموعه کاراکترها را حتی می توان با استفاده از محدوده کاراکترها تعریف کرد. مثلا به جای نوشتن:

echo 'linuxize' | tr 'lmno' 'wxyz'

می توانید عبارت زیر را بنویسید:

echo 'linuxize' | tr 'l-n' 'w-z'

هنگامی که c- استفاده می شود، tr همه کاراکترهایی را که در SET1 نیستند جایگزین می کند. در مثال زیر همه کاراکترها به جز "li" با آخرین کاراکتر مجموعه دوم جایگزین می شوند:

echo 'linuxize' | tr -c 'li' 'xy'

خروجی:

liyyyiyyy

همانطور که ممکن است متوجه شده باشید، خروجی بالا یک کاراکتر قابل مشاهده بیشتر از ورودی دارد. این به این دلیل است که دستور echo یک کاراکتر خط جدید نامرئی n\ را پرینت می کند که با y نیز جایگزین می شود. برای تکرار رشته بدون خط جدید، از گزینه n- استفاده کنید.
گزینه d- به tr می گوید که کاراکترهای مشخص شده در SET1 را حذف کند. هنگام حذف کاراکترها بدون فشردن، فقط یک مجموعه را مشخص کنید. مثلا به مثال زیر دقت کنید. در مثال زیر، دستور کاراکترهای l، i و z را حذف می کند:

echo 'Linuxize' | tr -d 'liz'

کاراکتر L حذف نمی شود زیرا ورودی شامل یک L بزرگ است در حالی که کاراکتر l در SET ای که معرفی کردیم، حروف کوچک است.

Lnuxe

در مثال زیر، tr کاراکترهای space تکراری را حذف می کند:

echo "GNU     \    Linux" | tr -s ' '

GNU \ Linux

هنگامی که از SET2 استفاده شود، دنباله کاراکتر مشخص شده در SET1 با SET2 جایگزین می شود.

echo "GNU     \    Linux" | tr -s ' ' '_'

GNU_\_Linux

گزینه t- دستور tr را وادار می کند تا SET1 را قبل از انجام پردازش بیشتر به طول SET2 کوتاه کند. به طور پیش فرض، اگر SET1 بزرگتر از SET2 باشد، tr از آخرین کاراکتر SET2 مجدداً استفاده می کند. به عنوان مثال:

echo 'Linux ize' | tr 'abcde' '12'

خروجی نشان می دهد که کاراکتر e از SET1 با آخرین کاراکتر SET2 که 2 است مطابقت دارد:

Linux iz2

حالا از همین دستور با گزینه -t استفاده کنید:

echo 'Linux ize' | tr -t 'abcde' '12'

Linux ize

می بینید که سه کاراکتر آخر SET1 حذف شده اند. SET1 به "ab" تبدیل می شود، دقیقا هم اندازه طول SET2، و هیچ جایگزینی انجام نمی شود.

دستور tr همچنین به شما اجازه می دهد تا گزینه های مورد استفاده را ترکیب هم کنید. به عنوان مثال، دستور زیر ابتدا همه کاراکترها به جز i را با 0 جایگزین می کند و سپس 0 کاراکتر تکرار شده را فشرده می کند:

echo 'Linux ize' | tr -cs 'i' '0'

0i0i0

تبدیل حروف کوچک به حروف بزرگ یا بالعکس یکی از موارد استفاده معمول دستور tr است. [:lower:] با تمام حروف کوچک و [:upper:] با تمام حروف بزرگ مطابقت دارد.

echo 'Linuxize' | tr '[:lower:]' '[:upper:]'

LINUXIZE

به جای کلاس های کاراکتر، می توانید از محدوده ها نیز استفاده کنید:

echo 'Linuxize' | tr 'a-z' 'A-Z'

برای تبدیل حروف بزرگ به حروف کوچک، به سادگی مکان set ها را با هم عوض کنید.

حالا می خواهیم تمامی کاراکترهای غیر عددی را حذف کنیم. دستور زیر تمام کاراکترهای غیر عددی را حذف می کند:

echo "my phone is 123-456-7890" | tr -cd [:digit:]

[:digit:] مخفف همه کاراکترهای عددی است و با استفاده از گزینه c-، دستور تمام کاراکترهای غیر عددی را حذف می کند. پس خروجی به شکل زیر خواهد بود:

1234567890

برای قرار دادن هر کلمه در یک خط جدید، باید همه کاراکترهای غیرالفبایی را مطابقت دهیم و آنها را با یک خط جدید جایگزین کنیم:

echo 'GNU is an operating system' | tr -cs '[:alnum:]' '\n'

GNU
is
an
operating
system

environmental variable یا متغیر محیطی PATH$ یک لیست دایرکتوری است که با کولون مشخص شده و به shell می‌گوید هنگام تایپ یک دستور، کدام دایرکتوری‌ها را برای فایل‌های اجرایی سرچ کند.
برای نمایش هر دایرکتوری در یک خط جداگانه، باید کولون (:) را مطابقت دهیم و آن را با خط جدید جایگزین کنیم:

echo $PATH | tr  ':' '\n'

/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin

نمایش دیدگاه ها (0 دیدگاه)

دیدگاه خود را ثبت کنید:

انتخاب تصویر ویرایش حذف
توجه! حداکثر حجم مجاز برای تصویر 500 کیلوبایت می باشد.


دسته بندی مطالب خوش آموز