كيفية استخدام أمر wc في Linux

نشرت: 2022-07-23
كمبيوتر محمول Linux يعرض موجه bash
fatmawati achmad zaenuri / Shutterstock.com

يعد حساب عدد الأسطر والكلمات والبايت في ملف مفيدًا ، لكن المرونة الحقيقية لأمر Linux wc تأتي من العمل مع أوامر أخرى. لنلقي نظرة.

ما هو أمر مرحاض؟

الأمر wc هو تطبيق صغير. إنها إحدى أدوات Linux المساعدة الأساسية ، لذلك ليست هناك حاجة لتثبيتها. سيكون موجودًا بالفعل على كمبيوتر Linux الخاص بك.

يمكنك وصف ما يفعله بكلمات قليلة جدًا. يقوم بحساب الأسطر والكلمات والبايت في ملف أو اختيار الملفات ويطبع النتيجة في نافذة طرفية. يمكن أيضًا أن يأخذ مدخلاته من دفق STDIN ، مما يعني أنه يمكن إدخال النص الذي تريده لمعالجته. هذا هو المكان الذي يبدأ فيه wc بالفعل بإضافة قيمة.

كيفية استخدام الأنابيب على نظام Linux
ذات صلة كيفية استخدام الأنابيب على لينكس

إنه مثال رائع على شعار Linux "افعل شيئًا وافعله جيدًا". نظرًا لأنه يقبل الإدخال عبر الأنابيب ، يمكن استخدامه في التعاويذ متعددة الأوامر. كما سنرى ، هذه الأداة المستقلة الصغيرة هي في الواقع لاعب فريق رائع.

إحدى الطرق التي أستخدم بها wc هي كعنصر نائب في أمر معقد أو اسم مستعار أقوم بإعداده. إذا كان من المحتمل أن يكون الأمر النهائي مدمرًا ويحذف الملفات ، فغالبًا ما أستخدم wc كبديل للأمر الحقيقي الخطير.

بهذه الطريقة ، أثناء تطوير الأمر ، أحصل على ملاحظات مرئية تفيد بأن كل ملف تتم معالجته كما توقعت. لا توجد فرصة لحدوث أي شيء سيء بينما أنا أتصارع مع بناء الجملة.

بسيطة مثل wc ، لا تزال هناك بعض المراوغات الصغيرة التي تحتاج إلى معرفتها.

الشروع في العمل مع مرحاض

إن أبسط طريقة لاستخدام wc هي تمرير اسم ملف نصي في سطر الأوامر.

 wc lorem.txt 

استخدام wc مع ملف به سطر نص طويل

يؤدي هذا إلى قيام wc بمسح الملف وإحصاء الأسطر والكلمات والبايت ، وكتابتها في نافذة المحطة الطرفية.

تعتبر الكلمات أي شيء محدد بمسافة بيضاء. سواء كانت كلمات من لغة حقيقية أم لا ، فهذا غير ذي صلة. إذا احتوى الملف على "frd g lkj" ، فسيظل يمثل ثلاث كلمات.

السطور عبارة عن تسلسلات من الأحرف تنتهي إما بحرف رجوع أو بنهاية الملف. لا يهم ما إذا كان السطر يلتف حوله في المحرر الخاص بك أو في النافذة الطرفية ، حتى يواجه wc حرف إرجاع أو نهاية الملف ، فإنه لا يزال هو نفسه.

وجد مثالنا الأول سطرًا واحدًا في الملف بأكمله. هذا هو محتوى ملف “lorem.txt”.

 القط lorem.txt 

محتوى الملف بسطر واحد طويل

كل ذلك يعد سطرًا واحدًا لأنه لا توجد أحرف إرجاع. قارن هذا بملف آخر ، “lorem2.txt” ، وكيف يفسره wc .

 مرحاض lorem2.txt
 القط lorem2.txt 

استخدام wc مع ملف به العديد من الأسطر

هذه المرة ، يحسب wc 15 سطراً لأنه تم إدراج أحرف الإرجاع في النص لبدء سطر جديد في نقاط محددة. ومع ذلك ، إذا قمت بحساب الأسطر التي تحتوي على نص فيها ، فسترى أنه لا يوجد سوى 12.

الأسطر الثلاثة الأخرى عبارة عن أسطر فارغة في نهاية الملف. هذه تحتوي فقط على إرجاع السطر. على الرغم من عدم وجود نص في هذه السطور ، فقد تم بدء سطر جديد ولذا wc على هذا النحو.

يمكننا تمرير العديد من الملفات إلى wc كما نود.

 wc lorem.txt lorem2.txt 

باستخدام wc مع ملفين

نحصل على إحصائيات لكل ملف على حدة وإجمالي لكل الملفات.

يمكننا أيضًا استخدام أحرف البدل حتى نتمكن من تحديد الملفات المطابقة بدلاً من الملفات المسماة صراحة.

 wc * .txt *.؟ 

استخدام مرحاض مع أحرف البدل

خيارات سطر الأوامر

بشكل افتراضي ، سيعرض wc الأسطر والكلمات والبايت في كل ملف. إنه نفس استخدام الخيارات -l (الأسطر) -w (الكلمات) و -c (بايت).

 wc lorem.txt
 مرحاض -l -w -c lorem.txt 

استخدام wc مع خيارات الخطوط والكلمات والبايت

يمكننا تحديد مجموعة الأرقام التي نرغب في رؤيتها.

 مرحاض -l lorem.txt

wc -w lorem.txt

مرحاض -c lorem.txt

مرحاض -l -c lorem.txt 

استخدام مرحاض مع مجموعة من الخيارات

يجب إيلاء اهتمام خاص للرقم الأخير الذي تم إنشاؤه بواسطة الخيار -c (بايت). كثير من الناس يخطئون في هذا على أنه عد الشخصيات. انها تحسب فعلا بايت . قد يكون عدد الأحرف وعدد البايت هو نفسه. لكن ليس دائما.

لنلق نظرة على محتويات ملف يسمى “unicode.txt”.

 القط unicode.txt 

محتوى ملف يحتوي على حرف غير لاتيني

تتكون من ثلاث كلمات وحرف أبجدي غير لاتيني. سنسمح لـ wc بمعالجة الملف بالإعداد الافتراضي للبايتات ، وسنفعل ذلك مرة أخرى لكننا نطلب أحرفًا باستخدام الخيار -m (أحرف).

 wc unicode.txt
 wc -l -w -m unicode.txt 

عد البايت في ملف ثم عد الأحرف في نفس الملف

عدد البايتات أكثر من عدد الأحرف.

دعنا نلقي نظرة على ملف التفريغ السداسي عشرية للملف ونرى ما يحدث. يعرض الخيار -C (الأساسي) الخاص بأمر hexdump وحدات البايت الموجودة في الملف في أسطر 16 ، مع ما يعادل ASCII العادي (إذا كان هناك واحد) في نهاية السطر. إذا لم يكن هناك حرف ASCII مطابق ، فستكون النقطة " . بدلا من ذلك.

 hexdump -C unicode.txt 

تفريغ سداسي لملف قصير بحرف غير لاتيني

في ASCII ، تمثل القيمة السداسية العشرية 0x20 حرف مسافة. إذا عدنا ثلاث قيم من اليسار ، فسنلاحظ أن القيمة التالية هي حرف مسافة. لذا فإن هذه القيم الثلاث الأولى 0x62 و 0x6f و 0x79 تمثل الأحرف الموجودة في "boy".

من خلال القفز فوق 0x20 ، نرى مجموعة أخرى من ثلاث قيم سداسية عشرية: 0x63 و 0x61 و 0x74 . هذه تكتب كلمة "قطة". بالانتقال فوق حرف المسافة التالي ، نرى ثلاث قيم أخرى للأحرف في "كلب". هذه هي 0x64 و 0x5f و 0x67 .

خلف كلمة "كلب" مباشرة يمكننا رؤية حرف مسافة 0x20 وخمس قيم سداسية عشرية أخرى. الأخيران هما إرجاع السطر ، 0x0a .

تمثل البايتات الثلاثة الأخرى الحرف غير اللاتيني ، الذي قرعناه باللون الأخضر. إنه حرف Unicode ، ويستغرق تشفيره ثلاثة بايت. هذه هي 0xe1 و 0xaf و 0x8a .

لذا تأكد من أنك تعرف ما تحسبه ، وأن البايت والأحرف لا يجب أن تكون متطابقة. عادةً ما يكون حساب البايت أكثر فائدة لأنه يخبرك بما هو موجود بالفعل داخل الملف. يمنحك العد حسب الأحرف عدد الأشياء التي تمثلها محتويات الملف.

ذات صلة: ما هي ترميزات الأحرف مثل ANSI و Unicode ، وكيف تختلف؟

أخذ أسماء الملفات من ملف

هناك طريقة أخرى لتوفير أسماء الملفات wc . يمكنك وضع أسماء الملفات في ملف ، وتمرير اسم هذا الملف إلى wc . يفتح الملف ويستخرج أسماء الملفات ويعالجها كما لو تم تمريرها في سطر الأوامر. يتيح لك هذا تخزين مجموعة عشوائية من أسماء الملفات لإعادة استخدامها.

ولكن هناك مسكتك ، وهي مشكلة كبيرة. يجب إنهاء أسماء الملفات فارغة ، وليس إنهاء حرف إرجاع . أي أنه بعد كل اسم ملف ، يجب أن يكون هناك بايت فارغ بقيمة 0x00 بدلاً من البايت الذي يرجع إلى الحرف المعتاد 0x0a .

لا يمكنك فتح محرر وإنشاء ملف بهذا التنسيق. عادةً ما يتم إنشاء ملفات مثل هذه بواسطة برامج أخرى. ولكن ، إذا كان لديك مثل هذا الملف ، فهذه هي الطريقة التي ستستخدمه بها.

هذا هو ملفنا الذي يحتوي على أسماء الملفات. فتحه بكميات less يظهر لك الأحرف " ^@ " الغريبة التي تستخدم less للإشارة إلى بايتات خالية.

 أقل من ملفات المصدر list.txt 

ملف يحتوي على عدد أقل من البايتات الفارغة

لاستخدام الملف مع wc ، نحتاج إلى استخدام --files0-from (قراءة الإدخال من) وتمرير اسم الملف الذي يحتوي على أسماء الملفات.

 wc --- files0-from = مصدر-ملفات-list.txt 

wc معالجة ملف أسماء الملفات المنتهية الخالية

تتم معالجة الملفات تمامًا كما لو تم تقديمها في سطر الأوامر.

إدخال الأنابيب إلى مرحاض

هناك طريقة أكثر شيوعًا ومرونة وإنتاجية لإرسال المدخلات إلى wc وهي توجيه الإخراج من الأوامر الأخرى إلى wc . يمكننا إثبات ذلك بأمر echo .

 صدى "عد هذا من أجلي" | مرحاض
 echo -e "عد هذا \ n من أجلي" | مرحاض 

استخدام echo لإرسال المدخلات إلى مرحاض

يستخدم أمر echo الثاني الخيار -e (أحرف تم تجاوزها) للسماح بالتسلسلات التي تم تجاوزها مثل " \n " رمز تنسيق السطر الجديد. يؤدي هذا إلى حقن خط جديد ، مما يتسبب في رؤية wc للإدخال على هيئة سطرين.

إليك سلسلة من الأوامر تغذي مدخلاتها من واحد إلى آخر.

 find ./* -type f | مراجعة | قطع -d '.' -f1 | مراجعة | فرز | فريد
  • البحث عن الملفات ( type -f ) بشكل متكرر ، بدءًا من الدليل الحالي. rev يعكس أسماء الملفات.
  • قص مقتطفات الحقل الأول ( -f1 ) عن طريق تحديد محدد المجال ليكون فترة “ . "والقراءة من" مقدمة "اسم الملف المعكوس حتى النقطة الأولى التي يعثر عليها. لقد قمنا الآن باستخراج امتداد الملف.
  • rev يعكس الحقل الأول المستخرج.
  • قم بفرزها بترتيب أبجدي تصاعدي.
  • uniq يسرد إدخالات فريدة إلى نافذة المحطة.

قائمة الامتدادات الفريدة في شجرة الدليل الحالية

يسرد هذا الأمر جميع امتدادات الملفات الفريدة في الدليل الحالي وأي أدلة فرعية.

إذا أضفنا الخيار -c (count) إلى الأمر uniq ، فسيتم حساب تكرارات كل نوع من أنواع الامتدادات. ولكن إذا أردنا معرفة عدد امتدادات الملفات الفريدة والمختلفة الموجودة ، فيمكننا إسقاط wc كآخر أمر في السطر ، واستخدام الخيار -l (الأسطر).

 find ./* -type f | مراجعة | قطع -d '.' -f1 | مراجعة | فرز | uniq | مرحاض -l 

إضافة مرحاض لحساب الامتدادات الفريدة

ذات صلة: كيفية استخدام Linux cut Command

وأخيرًا

إليك خدعة wc يمكن للمرء أن يفعلها لك. سيخبرك بطول أطول سطر في الملف. للأسف ، لا يخبرك أي خط هو. إنه يمنحك الطول فقط.

 مرحاض -L taf.c 

الحصول على طول أطول سطر في ملف wc

احذر من أن علامات التبويب يتم حسابها على أنها ثماني مسافات. إذا تم عرضها في المحرر الخاص بي ، فهناك ثلاث علامات تبويب ذات مسافتين في بداية هذا السطر. طوله الحقيقي 124 حرفًا. لذلك تم توسيع الرقم المبلغ عنه بشكل مصطنع.

كنت سأعالج هذه الوظيفة بقليل من الملح. وبهذا أعني لا تستخدمه. ناتجها مضلل.

على الرغم من المراوغات ، تعد wc أداة رائعة للإسقاط في أوامر الأنابيب عندما تحتاج إلى حساب جميع أنواع القيم ، وليس فقط الكلمات الموجودة في الملف.

ذات صلة: 37 أمرًا مهمًا من أوامر Linux يجب أن تعرفه