استخدام الأمر wc في اليونكس
بسم الله الرحمن الرحيم
نقاط الدرس:
1. معرفة بعض المعلومات عن الملفات النصية باستخدام الأمر (wc).
2. استخدام بعض الخيارات مع الأمر (wc):
· استخدام الخيار (c) مع الأمر (wc).
· اسنخدام الخيار (l) مع الأمر (wc).
· استخدام الخيار (w) مع الأمر (wc).
3. المقارنة بين ملفين نصيين باستخدام الأمر (cmp).
4. المقارنة بين ملفين نصيين باستخدام الأمر (diff).
1. معرفة بعض المعلومات عن الملفات النصية باستخدام الأمر (wc):
يمكننا هذا الأمر من
معرفة بعض المعلومات عن محتوى ملف نصي معين ومن هذه المعلومات التي يستطيع
البرنامج إيجادها هو عدد السطور في هذا الملف وكذلك عدد البايتات في الملف
(نقصد بعدد البايتات أي حجم الملف بالبايت) وكذلك بعض المعلومات الأخرى.
ويعرف هذا الأمر في بعض الأحيان باسم (أمر عد السطور).
والصورة العامة لهذا الأمر هي كالتالي:
bash-2.05$ command -option(s) filename
حيث أن
(filename) هو اسم الملف النصي الذي تريد أخذ بعض المعومات عنه. لنفترض
مثلاً أننا نريد أن نأخذ بعض المعلومات عن الملف (file1.txt) الذي
استخدمناه في دروس سابقة لذلك لكي تقوم بتطبيق الأمر لابد من الانتقال إلى
المسار الموجود فيه الملف ثم يتم تطبيق الأمر على الصورة التالية:
bash-2.05$ wc file1.txt
8 51 265 file1.txt
في المثال السابق لاحظ أن الخرج كان على الصورة :
8 51 265 file1.txt
والعدد
الأول دائما من هذا الأمر يرمز إلى عدد الأسطر في هذا الملف النصي ،بينما
العدد الثاني هو عدد الكلمات في الملف ويتم حساب عدد الكلمات بطريقة أن كل
مجموعة من الحروف لم تفصل بينها مسافة فإنها تعتبر كلمة واحدة فلو مثلا
عندما تم تطبيق الأمر (wc) ووجد في الملف الكلمة (welcomehowaeyou)
سيتعبرها الأمر كلمة واحدة وذلك لأنه لم يتم الفصل بينهما بمسافة. أما
العدد الثالث فهو بيبن عدد البايتات في في الملف أو حجم الملف بوحدة البايت
(كل حرف يشكل بايت واحد وكذلك المسافة تشكل بايت واحد). أما الأخر كما
يظهر فهو اسم الملف . ومن خلال ما سبق نستطيع القول ان الخرج من الأمر
السابق تكون صورته العامة هي كما يلي:عدد الأسطر عدد الكلمات عدد البايتات اسم الملف،أرجوا ان تكون قد اتضحت الفكرة.
2. استخدام بعض الخيارات مع الأمر (wc):
كما قلنا سابقاً أن الخيارات هي عبارة عن عملية حصر عمل الأمر لكي يقوم بمهمة معينة. ويوجد هناك خيارات لهذا الأمر من أهمها ما يلي:
· استخدام الخيار (c) مع الأمر (wc):
ويستخدم هذا الخيار لكي يقوم بإظهار عدد البايتات فقط من المعلومات الذي يقوم بإحضارها الأمر (wc) لاحظ المثال التالي:
bash-2.05$ wc -c file1.txt
265 file1.txt
لو قمت بعمل مقارنة بين عدد البايتات من ناتج الخرج هذا وناتج خرج الأمر من غير الخيارات ستجد التشابه في عدد البايتات.
· استخدام الخيار (l) مع الأمر (wc):
ويستخدم هذا الخيار لكي يقوم بإظهار عدد الأسطر في الملف النصي. لاحظ المثال التالي:
bash-2.05$ wc -l file1.txt
8 file1.txt
لاحظ أن الناتج متشابه مع ناتج استخدام الأمر بدون أي خيارات.
· استخدام الخيار (w) مع الأمر (wc):
وهذا الخيار يقوم فقط بإظهار عدد الكلمات في الملف النصي. لاحظ المثال التالي:
bash-2.05$ wc -w file1.txt
51 file1.txt
ولاحظ هنا التشابه أيضاً في الناتج مع ناتج استخدام الأمر (wc) بدون أي خيارات.
3. المقارنة بين ملفين نصيين باستخدام الأمر (cmp):
في بعض الأحيان
يحتاج البعض منا إلى المقارنة بين محتويات المف وذلك لرؤية النصوص
الموجودة بها هل هي متشابهة أم لا. لما كانت عملية أن تفتح ملف وتنظر إلى
محتواه ثم تفتح الملف الملف الآخر وتنظر إلى محتواه ثم تقوم بالمقارنة بشكل
حرفي حتى تجد الاختلاف لذلك وجد الأمر (cmp) لكي يريحك من هذا العناء كله
ويقوم هو بالمهمة بدلاً عنك. فهذا الأمر يقوم بعمل مقارنة بين ملفين نصيين
والصورة العامة لهذا الأمر هي:
bash-2.05$ cmp file1 file2
حيث أن (file1) هو الملف الأول و (file2) هو الملف الثاني. ولكي يتم استيعاب كيفية عملية المقارنة تخيل السيناريو التالي:
لدينا ملفين (A) و (B) عند تنفيذ عملية المقارنة فإنها تتم على الصورة التالية:
يتم فتح
الملفين (A) و (B) وتجهيزهما لكي يتم القراءة منها وذلك بوضعها في الذاكرة.
ثم يتم الإنتقال إلى أول السطر الأول في كلا الملفين (A) و (B) ثم تتم
قراءة الحرف الأول (A) وقراءة الحرف الأول أيضاً من الملف (B) ثم تتم
مقارنتها فإذا وجدهما متشابهين انتقل إلى الحرف الذي يليهما في كلا الملفين
وتتم هذه العملية إلى أن يتم إيجاد الاختلاف أو الوصول إلى شفرة نهاية
الملف (EOF). ولاحظ أنه عند أول اختلاف في الحروف فإن الأمر سوف يتوقف عن
تكملة المقارنة لبقية الملف ويظهر لك المكان الذي وجد فيه الاختلاف
وبالتحديد في أي سطر وكذلك عند أي حرف.
ويمكننا إجراء عملية مقارنة بين الملفين (file1.txt) والملف (theone) الموجودين في نفس الدليل. ويتم تنفيذ الأمر على الصورة:
bash-2.05$ cmp file1.txt theone
file1.txt theone differ:char 1, line 1
وتقسير الناتج السابق يكون كما يلي:
الملف
(file1.txt) والملف (theone) يختلفون (differ) وهي إختصار كلمة (different)
ثم حدد أن الإختلاف كان في الحرف الأول بذكره (char 1) حيث أن (char)
معناها حرف وهي إختصار للكلمة (character)، ثم بعد ذلك حدد السطر بذكره
(line 1) وهذا يعني أن الإختلاف الأول موجود في السطر الأول والحرف الأول
من السطر الأول ولذلك تم التوقف عن عملية إكمال عكلية المارنة. من خلال ما
سبق يتضح أن الصورة العامة لناتج مثل هذا الأمر في حالة وجود إختلاف هي
الملف الأول الملف الثاني differ: رقم الحرف, رقم السطر
ربما يتبادر
إلى ذهنك الآن إذا لم يكن هناك أي إختلاف فماا لذي سيحصل؟ والجواب ببساطة
هو لاشي!! أي لن يظهر على الشاشة أي تعبير وذلك دلالة على أنه لم يوجد
اختلاف بين الملفين. طبق الأمر (cmp theone theone) ولاحظ أن الملفين
بالتأكيد متشابهين وانتظر النتيجة.
4. المقارنة بين ملفين نصيين باستخدام الأمر (diff):
وهذا الأمر هو
أحد أوامر المقارنة بين محتوى ملفين نصيين والفرق بينه وبين الأمر (cmp) في
أن الأمر (cmp) كما عرفنا سابقاً يتوقف عند أول خطأ بينما الأمر (diff) لا
يتوقف الا عند الوصول إلى شفرة نهاية الملف (EOF) والصورة العامة لهذا
الأمر هي:
bash-2.05$ diff file1 file2
حيث أن الملف الأول هو (file1) والملف الآخر هو (file2). ولكي يتم فهم ميكانيكة عمل هذا الأمر لاحظ المثال التالي:
bash-2.05$ diff file1.txt theone
1,7c1
< alot of welcomez for you people
< and also alot of thanks to you people
< to read these lessons
< i hope these lessons is good for you
< and at the end
< thanks to all my friends especilay
< al-Mqatel and existenZ.hello guys,i am learning Unix now
---
> hello guys,i am learning Unix now
نلاحظ أنه قد
تم إظهار النص الموجود في الملف كما هو ولكن بإظهار بعض العلامات في بداية
كل سطر . والعلامات هذه كما تشاهد هي أحد ثلاثة علامات وهي اما (<) أو
(>) أو (---) . وتفسير هذه العلامات هو كما يلي:
العلامة |
تفسيرها |
> |
وهي تعني أن الملف الثاني (theone) لكي يكتمل ويصبح شبيهاً بالملف الأول (file1.txt) فإنه لابد من وضع هذا السطر فيه. أي بمعنى آخر أن السطر هذا موجود في الملف الأول (file1.txt) وغير موجود في الملف الثاني (theone). |
< |
وهي تعني أن الملف الثاني (theone) يوجد به هذا السطر ومن الممكن أن يكون هذا السطر موجود أيضاً في الملف الأول (file1.txt) ولكنه ليس كسطر مستقل. |
--- |
وهي تعني أن هذا السطر في الملفين يكون متشابه |
ويوجد هناك بعض الخيارات التي تستطيع أن تستعملها مع هذا الأمر وذلك حسب استخدام مخيلتك ولمزيد من التفاصيل استخدم الأمر (man diff).