الرئيسيةالتسجيلدخول

شاطر | 
 

 Text Processing

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل 
كاتب الموضوعرسالة
Tiger
مشرف
مشرف


ذكر
عدد الرسائل : 1619
العمر : 27
تاريخ التسجيل : 22/02/2008

مُساهمةموضوع: Text Processing   الإثنين فبراير 23, 2009 3:02 am

[size=24]اليوم بعون الله هنتكلم عن ال Text Processing

ليه وازاى ؟؟؟

ايه فايدة دا فى اللينوكس ؟

اللينوكس بيشوف اى خدمة service او device او اى حاجة على اعتبار انها ملف
موجود عنده وكمان بيشوف كل الاعدادات على اساس انها ملفات ودا فعلا حقيقى
ان ملف مثلا اعداد سيرفر الاباتشى بيبقى موجود فى السيرفر وملف تانى بيمثل
الهارد ديسك وملف تالت بيمثل حاجة كمان جوا السيستم وهكذا

ومن هنا جاءت فائدة التحكم فى الملفات وتعلم كيفية التعديل فيها والتعامل
معها بسهولة للينوكس وتظهر أهميتها مثلا فى حالة ال logs فى السيرفر حيث
انها بتوضح حالة السيستم وأى شىء بيحصل فيه لو حصل مثلا إيرور فى السيستم
بيتم كتابته فى اللوجز فإنته محتاج تعرف ازاى تقدر تعدل فيها وتقدر تطلع
الايرور اللى انته محتاجه لانها اكيد ملفات كتيرة جدا مثلا بالنسبة لسيرفر
الاباتشى بيكون موجود مثلا فيه ان الايبى 2.2.2.2 دخل الساعة 3 وعمل
actions معينة وطلب صفحات معينه على السيرفر فطبعا انا محتاج الملف دا
ازاى اقدر اخرجه واتحكم فيه وادخله فى عمليه تانية وازاى احافظ على وجوده
او ألغيه

ان شاء الله يظهر كل هذا فى ال vim و ال vi
وايضا يظهر من خلال أدوات التحكم فى الملفات والتعامل مع الملفات فى هذه ال unit

نبدأ على بركة الله :


كود PHP:




Tools for Extracting Text
*File Contents: less and cat







ادوات فى الباش يمكنها إستخراج بيانات من ملف والتعامل مع الملف او
سطر داخل الملف لادخاله فى عمليه اخرى او عن طريق معرفته والتعامل معه
مثال على هذا الامر cat فانا بطلب من السيستم عرض محتويات الملف فى الشل بحيث يظهر لك فى الشل
وهنا أيضا نتقابل مع الخصائص لهذا الأمر مثلا :
كود PHP:




#ls -alR /etc
#ls -alR /etc >kimo.txt
#cat kimo.txt
#cat kimo.txt | less
#cat kimo.txt | more







فى الامر الاول هنا قمنا بعرض كافة البيانات الخاصة بالمسارات والملفات وتصاريحها داخل المسار /etc
فى الامر الثانى طبعا قمنا بعمل redirect فلم يظهر لنا شىء ولكن قام بإنشاء الملف kimo.txt فى المسار الحالى /root
هنا نلاحظ ان الامر الثالث قام بعرض المحتويات للملف فى صفحة الشل ولكن
محتويات الملف كبيرة جدا جدا جدا لدرجة لا يمكن عرضها فى صفحة واحدة و
الملف الحالى الذى يحتوى على كافة المسارات والملفات والتصاريح والمعلومات
الخاصة بالمسار /etc
وفى الامر الرابع قمنا بعرض محتويات الملف طبعا لاحظنا انها كبيرة جدا
ولكن أمرنا الشل بعرضها جزء جزء على قدر حجم الصفحة المفتوحه فى الشل وهنا
يستخدم المفتاح enter والأسهم حتى تصل الى نهاية الملف وللخروج إضغط الحرف
q

جميل حتى الان

الان نقوم بتجربه الامر مرة أخرى

كود PHP:




cat /etc/passwd | less







وهنا نرى ميزة رائعة وهى اننا نستطيع من خلال نفس النافذة استعمال
محرر ال vi الرائع وذلك من خلال الضغط على v ثم / ونجرب البحث مثلا عن
كلمة root يظهر لك كم مرة مكرره فى النص المعروض
او تقدر كمان تغير فى الملف من خلال ال vi وتحفظه كانك فاتح الملف بالظبط


ولكن :

أنا محتاج مثلا إنى أجيب أول عشر سطور فى الملف بستخدم الامر head ( الرأس )

كود PHP:




# head adduser.conf







ولو عايز مثلا اجيب اخر عشر سطور tail (الذيل )


كود PHP:




#tail adduser.conf







التحكم فى عدد السطور بيكون من خلال option معين تقدر تتحكم فيه
بنفسك لازم تقرا فى ال manual للأوامر والله هتستفيد كتير جدا جدا جدا

مثال

كود PHP:




#head -n3 adduser.conf







نأتى للأمر الرائع cut

هنا هنستخدم كمثال الملف الموجود فى توزيعة كل منا /etc/passwd
بيعمل ايه الامر cut ؟
الأمر معناه قص وهوا بالظبط زى المنشار بمعنى انه قبل ما تستخدمه للقطع
لازم تعرف هتقطع فين وهتقطع ازاى واللى هتقطعه هتستفيد فيه بإيه

مثال
هات اول سطر من الملف /etc/passwd ونشوفه

كود PHP:




#root:x:0:0:root:/root:/bin/bash







بغض النظر عن معنى المكتوب لانه سبق شرحه ولكن الملاحظ هنا ان الملف
مقسم كل السطور كالتالى الى خانات كل خانه يفصل بينها علامة : تسمى
delimiter
والخانة طبعا تسمى field
نحاول تطبيق الامر cut على الملف كما ينبغى


كود PHP:




#cut -f7 -d":" /etc/passwd







تم كتابه الامر cut بمعنى اقطع من الحقل field7حيث الفاصل بين
الخانات او الحقول هوا علامة ال delimiter هى : وتم وضعها بين علامتى
التنصيص كالتالى "" ننظر للناتج :
نرى قائمة طويلة من الكلمات كالتالى

كود PHP:




/bin/bash
/bin/sh
/bin/sh
/bin/sh
/bin/sync
/bin/sh
/bin/sh
/bin/sh
/bin/sh
/bin/sh
/bin/sh
/bin/sh







وهى القائمة التى قمنا بقصها فى الامر السابق .

نستكمل
فى أداة مهمة جدا فى الامر وسنشرح معناها اولا :
ماذا يحدث عندما يحدث مشكلة فى اى نظام تشغيل ؟؟؟ او حتى فى سيسكو ؟؟؟
بيتم ارسال الأخطاء أو ال debug اولا الى اليوزر وابلاغه باللى بيحصل اول باول
مثلا عندى ملف خاص باعدادات كارت النتورك فى الشبكة
مثلا فى السطر الاول بيقولك ان الكارت موجود
السطر التانى بيذكر الماك ادريسس
السطر التالت بيقولك ان الاتصال بالانترنت بيمر بمشكلة وبيذكرها وهكذا الحال
جميل حتى الان
ماذا لو أردت ان ارى الايرور فور حدوثه
يعنى ارى التقدم فى الملف لحظة بلحظة ...لكى استطيع الحل للمشكلة فور
الحدوث يعنى live watch واعرف المشكلة فور ما بتدخل اللوج واعرف المشكلة
منين عشان اقدر احلها
طيب اعمل كدا منين ؟؟؟؟

نلقى نظرة اولا على الملف اللى هنراقب التجديد فيه


كود PHP:




# vi /var/log/messages







اى شىء هيحصل فى السيستم بيتم ذكره فى الملف هنا
بنلاقى فى الملف معلومات عن كل حاجة فى السيستم مثلا معلومات عن ال TCP ,Hard disk , floppy

هنشوف كل التجديد فى الملف اول باول بالامر التالت :

كود PHP:




#tail -f /var/log/messages







طيب عايز اعمل تغيير
ممكن اوقع النتورك واشوف ايه اللى هيحصل وهيتكتب فى الملف


كود PHP:




#service network restart







نقدر نشوف التجديدات بالامر السابق وهوا


كود PHP:




#tail -f /var/log/messages







بس لازم تبقى فاتح اتنين نافذة للشل او الترمينال
هتشوف كل اللى بيحصل فى الملف لايف قدامك

ملاحظة الامر tail -f = الامر tailf

الجزء القادم مهم جدا يرجى التركيز جيدا جدا

الامر grep :
الامر بيعمل سيرش او طلب من السيستم انه يجيبلك كلمة مثلا من ملف معين
يعنى هيجيب لك السطر بالكامل الذى يحتوى على كلمة x او الشىء المراد البحث
عنه

مثال :


كود PHP:




#grep root /etc/passwd







هيروح للملف ويدور على كل السطور اللى فيها كلمة root ويجيبهالك

نشوف ال options اللى اوبشن ممكن تجيبهالى

اتبع الخطوات التالية :

كود PHP:




#echo " Hello ....!
#>mybestARABHARDWARE.NET
" >grep1.txt







بكدا انته عملت ملف اسمه grep1.txt وحطيت فيه الكلام اللى قدامك دا


كود PHP:




#grep ARABHARDWARE grep1.txt







الطبيعى هنا انه هيجيبلك الملف ومكانه اللى مكتوب فيه الجملة دى


كود PHP:




#mybestARABHARDWARE.NET







طيب لو كتبت للامر الكلمة كدا


كود PHP:




#grep arabhardware grep1.txt







مش هيلاقى اى حاجة لانه فعلا مش لاقى الكلمة لاختلاف شكل الحروف فهوا case sensative

وهنا بنلاقة option بيتيح لك البحث عن الكلمة فى اى ملف سواء CAPTAL OR small

كود PHP:




# grep -i arabhardware grep1.txt







طيب optin تانى يقدر يقولك الكلمة متكرره فى كام سطر مثال :


كود PHP:




# grep -n root /etc/passwd







نشوف option تانى :

كود PHP:




# grep -v root /etc/passwd







هنا هيجيب لك ويطبع لك كل السطور التى لا تحتوى على كلمة root
جرب الأمر القادم وإفهمه :d


كود PHP:




# grep -v root /etc/passwd |grep root







اتمنى يكون الجميع فهم الامر واتاكد من فعالية الاداه grep

فى كمان 2 options لكن الاول اكتب الامر دا


كود PHP:




# echo "line no 1
line no 2
line no 3" >>grep1.txt








كود PHP:




# grep -A3 HARD grep1.txt







يعنى هات كل الكلام اللى after او بعد كلمة Hard فى الملف دا
والنتيجة :

كود PHP:




mybestARABHARDWARE.NET
line no 1
line no 2
line no 3








كود PHP:




# grep -B3 HARD grep1.txt







يعنى هات كل الكلام اللى before او بعد كلمة Hard فى الملف دا
النتيجة :

كود PHP:




Hello ....!
mybestARABHARDWARE.NET







الامر cut تم شرحه من قبل

كود PHP:




#cat /etc/passwd | cut -f1 -d ":"
#cat -c3-c5 /etc/passwd







أو مثلا :


كود PHP:




#echo "aaaa
#BBBBBBBB
#CCCCCCCCCCCCC
#dddddddddddddddddddd " >krkr.txt







وبعدها هيختار الحروف من


كود PHP:




#cat -c1-c5 krkr.txt







ازاى اقدر اعمكل احصائيات للملف :
كام سطر كام كلمة كام حرف
اقدر ارتب الملف بطريقة ما
عندى سطور متكرره ومش عايز اطلعها فى الموضوع يعنى عايز السطور اللى مش متشابهة
دلوقتى وقت الادوات اللى تسمح لنا بالحاجات دى
فلنجرب مثلا التالى بالتركيز :


كود PHP:




# wc grep1.txt








كود PHP:




5 12 67 grep1.txt







بيقدر يقولك الملف فيه كام كلمة وكام حرف وكام سطر
الامر دا ليه اوبشنز قوية جدا مثلا

كود PHP:




#wc -l krkr.txt







يقولك كام سطر

كود PHP:




#wc -c krkr.txt
#wc -m krkr.txt
#wc -w krkr.txt







بيفيد فى ايه ؟؟؟
بعرف الفايل زاد ولا لاء ؟؟؟؟
او هل فى تعديل او معلومات اضافية تم اضافتها عليه او لاء

جرب اقرا ال
كود PHP:




#man wc







نروح للامر sort

كود PHP:




$ sort [options] file(s)







مثلا لما ابقى عايز اعمل ترتيب لسطور جوا ملف حسب الترتيب الأبجدى أو ال alphapetical مثال عندى فايل زى دا

نفذ الأمر التالى

كود PHP:




[root@localhost ~]# echo "aaa
aab
xyz
cli ">1.txt







اول شىء هيرتبه على حسب الترتيب الأبجدى
لو الملف فيه ارقامن هيتعمل الترتيب ب -m
طيب نجرب ونشوف

كود PHP:




[root@localhost ~]# sort 1.txt
aaa
aab
cli
xyz







نجرب تانى

كود PHP:




[root@localhost ~]# echo "9999
587
11111 ">1.txt
[root@localhost ~]# sort 1.txt
11111
587
9999







فى عندك reverse للترتيب

كود PHP:




[root@localhost ~]# sort -r 1.txt
9999
587
11111







طيب عايز اعمل ترتيب ومش عايز اطلع اى سطر متكرر
ازاى ؟؟؟ او يعنى ايه

نفذ الامر التالى :

كود PHP:




[root@localhost ~]# sort 2.txt
block
karim
karim
kimotop
mohamed
mohamed
mohamed
mohamed-saad
mrkrkr
thanks
[root@localhost ~]# sort -u 2.txt
block
karim
kimotop
mohamed
mohamed-saad
mrkrkr
thanks







الفرق واضح طبعا

طبعا مننساش ان الslide فيها التالى كله :

كود PHP:




$ sort [options] file(s)
Common options

-r performs a reverse (descending) sort
r
-n performs a numeric sort
r
-f ignores (folds) case of characters in strings
r
-u (unique) removes duplicate lines in output
r
-t c uses c as a field separator
r
-k X sorts by c-delimited field X
r
Can be used multiple times







■[/size]
الرجوع الى أعلى الصفحة اذهب الى الأسفل
 
Text Processing
استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1
 مواضيع مماثلة
-
» جميع محاضرات ال DSP للدكتور / محمد فتحى لثالثة اتصالات
» البرنامج الذي يحول من PDF, RTF, DOC, PPT, XLS, HTML , MHT إلىtext
» مقدمة فى الفيجوال بيسك 6
» epreuve5

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
 :: الكمبيوتر والإنترنت :: المصادر المفتوحه-
انتقل الى: