الأمر tr لتحويل أو حذف المحارف


السلام عليكم ورحمة الله وبركاته



تعرفنا سابقا في موضوع الأمر cut لقص واستخراج جزء من النص على أداة فلترة النصوص cut وبعض استخداماتها كما التمسنا في موضوع تعرف على أكثر الأوامر التي تستخدمها على Terminal
قوة أدوات الفلترة عند دمجها مع بعض ؛ واليوم بإذن الله سنتعرف على الأمر tr لتحويل واستبدال المحارف مع أمثلة عملية لاستخدامه .




أمثلة عن استخدام الأمر tr 



سأذكر مجموعة من الأمثلة مستخدما الأمر tr لإبراز إمكانياته في فلترة النصوص :

-نستطيع بواسطة tr استبدال محرف واحد أو قائمة من المحارف إلى محارف أخرى ، وكمثال على هذا :

echo OtmangX | tr "OX" "ox"

بحيث يتم استبدال O بo و X ب

-اسبتدال الأحرف الكبيرة بالصغيرة وذلك من خلال استخدام المجالات a-z و A-z 

cat /etc/issue
cat /etc/issue | tr A-Z a-z
tr A-Z a-z /etc/issue
tr A-Z a-z < /etc/issue

الأمر tr يقبل المدخلات فقط من مجرى الدخل القياسي وبالتالي لا نستطيع تمرير ملف ما كبارامتر ولحل هذه المشكلة نستخدم المعامل < لجعل مدخلات الأمر من ملف ما


ناتج الأوامر السابقة:


-يستعمل الملف /etc/passwd نقطة التفسير ":" لفصل الحقول بعضها عن بعض، يمكننا تغيير هذا الفاصل برمز آخر مثلا علامة التعجب ! عن طريق التالي :

head /etc/passwd
head /etc/passwd | tr ':' '!'
ناتج الأوامر السابقة:


-الآن سنقوم بإظهار خمس أسطر الأولى من ملف /etc/passwd وإجراء بضع تعديلات
سنقوم بترقيم الأسطر عن طريق الأمر   nl

head -5 /etc/passwd
head -5 /etc/passwd | nl


-الآن مذا لو أردنا بدل الأرقام وضع الحروف لتعداد الأسطر

head -5 /etc/passwd | nl | tr '1-9' 'a-e'
head -5 /etc/passwd | nl | tr '1-9' 'A-E'

ناتج الأوامر السابقة:


خصائص الأمر tr



-d : حذف قائمة المحارف أو الرموز أو الفئات الممررة مع الأمر
-s : لحذف تكرار الأحرف .

فكما ترون فالأمر nl يقوم بوضع مسافات فارغة في الهامش وكذلك بعد الرقم ، ونود حذف كل هذه المسافات بدون الخوض في خصائص الأمر nl، ومن أجل هذا سنستعين بالفئة [:blank:]
التي ترمز للفراغات الأفقية :
head -5 /etc/passwd | nl | tr -d [:blank:]
كما يمكننا بدل حذف كل المسافات الفارغة حذف تكرارها فقط والإبقاء على مسافة فارغة واحدة

head -5 /etc/passwd | nl | tr -s [:blank:] ' '

ناتج الأوامر السابقة:



هناك فئات أخرى متاحة للاستعمال كما في المثال التالي لو أردنا حذف تكرارات الأحرف:

echo LLinuxx | tr -s Lx
echo LLiiiinnnuxx | tr -s [:alpha:]


حذفنا جميع التكرارات الزائدة للحرفين "L" و "x" في الأمر الأول، وفي المثال الثاني جعلنا الأمر أكثر شمولية ليشمل جميع الأحرف المكررة .


استخدمنا في هذه الأمثلة الأخيرة ما يسمى بالفئات ، وهذه أمثلة عنها :


وكمثال أخير ، سنتطرق إلى كيفية تحويل ملف نصي من صيغة DOS إلى صيغة UNIX


tr -d '\r' file_dos > file_unix


استخدمنا الرمز \r وهناك غيرها، وهذه قائمة بالرموز مع معانيها :




إلى موضوع آخر إن شاء الله



الإبتساماتإخفاء