النقاط الرئيسية
- يتيح لك الأمر cut في Linux استخراج أجزاء من النص من الملفات أو تدفقات البيانات.
- يمكن أن يعمل القص مع البايتات أو الأحرف أو الحقول المحددة، مما يسمح لك بتحديد أجزاء معينة من النص استنادًا إلى معاييرك.
- يمكن دمج Cut مع أدوات مساعدة أخرى مثل greg لإجراء عمليات أكثر تعقيدًا
لينكس cut يتيح لك الأمر استخراج أجزاء من النص من الملفات أو تدفقات البيانات. وهو مفيد بشكل خاص للعمل مع البيانات المحددة، مثل ملفات CSV. إليك ما تحتاج إلى معرفته.
أمر القطع
ال cut يعد الأمر من أقدم الأوامر في عالم يونكس، حيث ظهر لأول مرة في عام 1982 كجزء من نظام AT&T System III UNIX. والغرض من استخدامه في الحياة هو اقتصاص أجزاء من النص من الملفات أو التدفقات، وفقًا للمعايير التي تحددها. إن بناء الجملة الخاص به بسيط مثل الغرض منه، ولكن هذه البساطة المشتركة هي التي تجعله مفيدًا للغاية.
بالطريقة التقليدية لنظام UNIX، من خلال الجمع بين cut مع المرافق الأخرى مثل grep يمكنك إنشاء حلول أنيقة وقوية للمشاكل الصعبة. في حين أن هناك إصدارات مختلفة من cutسنناقش إصدار GNU/Linux القياسي. انتبه إلى الإصدارات الأخرى، وخاصةً الإصدار 1.1.1. cut تم العثور على هذه الخيارات في إصدارات BSD، ولا تتضمن جميع الخيارات الموضحة هنا.
يمكنك التحقق من الإصدار المثبت على جهاز الكمبيوتر الخاص بك عن طريق إصدار هذا الأمر:
cut --version
إذا رأيت “GNU coreutils” في الناتج، فأنت تستخدم الإصدار الذي سنصفه في هذه المقالة. جميع إصدارات cut يحتوي الإصدار Linux على بعض هذه الوظائف، ولكن تم إضافة تحسينات إليه.
الخطوات الأولى مع القطع
سواء كنا نقوم بضخ المعلومات إلى cut أو باستخدام cut لقراءة ملف، الأوامر التي نستخدمها هي نفسها. أي شيء يمكنك القيام به لتدفق الإدخال باستخدام cut يمكن القيام بذلك على سطر من النص من ملف، والعكس صحيح. يمكننا أن نقول cut للعمل مع البايتات أو الأحرف أو الحقول المحددة.
لتحديد بايت واحد، نستخدم -b خيار (بايت) وأخبر cut أي بايت أو بايتات نريدها. في هذه الحالة، يكون البايت الخامس. نرسل السلسلة “how-to geek” إلى cut الأمر باستخدام أنبوب، “|”، من echo .
echo 'how-to geek' | cut -b 5
البايت الخامس في هذا السلسلة هو “t”، لذا cut يستجيب عن طريق طباعة “t” في نافذة المحطة الطرفية.
لتحديد نطاق نستخدم شرطة. لاستخراج البايتات من 5 إلى 11، بما في ذلك، سنصدر هذا الأمر:
echo 'how-to geek' | cut -b 5-11
يمكنك توفير بايتات أو نطاقات مفردة متعددة عن طريق فصلها بفاصلات. لاستخراج البايت 5 والبايت 11، استخدم هذا الأمر:
echo 'how-to geek' | cut -b 5,11
للحصول على الحرف الأول من كل كلمة يمكننا استخدام هذا الأمر:
echo 'how-to geek' | cut -b 1,5,8
إذا استخدمت الواصلة بدون رقم أول، cut يعيد كل شيء من الموضع 1 حتى الرقم. إذا استخدمت الشرطة بدون رقم ثانٍ، cut يقوم بإرجاع كل شيء من الرقم الأول إلى نهاية الدفق أو السطر.
echo 'how-to geek' | cut -b -6
echo 'how-to geek' | cut -b 8-
استخدام القطع مع الأحرف
استخدام cut مع الأحرف، يكون الأمر مشابهًا تمامًا لاستخدامه مع البايتات. في كلتا الحالتين، يجب توخي الحذر بشكل خاص مع الأحرف المعقدة. باستخدام -c خيار (الحرف) نخبر cut للعمل من حيث الأحرف، وليس البايتات.
echo 'how-to geek' | cut -c 1,5,8
echo 'how-to geek' | cut -c 8-11
تعمل هذه الكلمات بالضبط كما تتوقع. ولكن ألق نظرة على هذا المثال. إنها كلمة مكونة من ستة أحرف، لذا فإن السؤال cut لإرجاع الأحرف من واحد إلى ستة يجب إرجاع الكلمة بأكملها. ولكن هذا لا يحدث. فهي تتكون من حرف واحد فقط. لرؤية الكلمة بأكملها، يتعين علينا أن نسأل عن الأحرف من واحد إلى سبعة.
echo 'piñata' | cut -c 1-6
echo 'piñata' | cut -c 1-7
المشكلة هي أن الحرف “ñ” يتكون في الواقع من بايتين. يمكننا أن نرى ذلك بسهولة. لدينا ملف نصي قصير يحتوي على هذا السطر من النص:
cat unicode.txt
سوف نقوم بفحص هذا الملف باستخدام hexdump الأداة المساعدة. باستخدام -C يمنحنا الخيار (canonical) جدولًا للأرقام السداسية عشرية مع المكافئ ASCII على اليمين. في جدول ASCII، لا يتم عرض “ñ”، بل توجد بدلاً من ذلك نقاط تمثل حرفين غير قابلين للطباعة. هذه هي البايتات المميزة في الجدول السداسي عشري.
hexdump -C unicode.txt
يتم استخدام هذين البايتين بواسطة برنامج العرض – في هذه الحالة، غلاف Bash – لتحديد “ñ”. تستخدم العديد من أحرف Unicode ثلاثة بايتات أو أكثر لتمثيل حرف واحد.
إذا طلبنا الحرف 3 أو الحرف 4، فسوف يظهر لنا رمز الحرف غير القابل للطباعة. وإذا طلبنا البايتات 3 و4، فسوف يفسرها shell على أنها “ñ”.
echo 'piñata' | cut -c 3
echo 'piñata' | cut -c 4
echo 'piñata' | cut -c 3-4
استخدام القطع مع البيانات المحددة
يمكننا أن نسأل cut لتقسيم أسطر النص باستخدام فاصل محدد. بشكل افتراضي، يستخدم الأمر cut حرف علامة الجدولة ولكن من السهل إخباره باستخدام أي حرف نريده. يتم فصل الحقول في ملف “/etc/passwd” بعلامة النقطتين “:”، لذا سنستخدم ذلك كفاصل ونستخرج بعض النص.
تُسمى أجزاء النص الموجودة بين الفواصل بالحقول، ويتم الرجوع إليها تمامًا مثل البايتات أو الأحرف، ولكنها تسبقها -f خيار (الحقول). يمكنك ترك مسافة بين “f” والرقم، أو لا.
يستخدم الأمر الأول -d خيار (delimiter) لإخبار الأمر cut باستخدام “:” كفاصل. سيؤدي هذا إلى سحب الحقل الأول من كل سطر في ملف “/etc/passwd”. ستكون هذه قائمة طويلة لذا نستخدم head مع -n خيار (الرقم) لإظهار أول خمس استجابات فقط. الأمر الثاني يقوم بنفس الشيء ولكنه يستخدم tail لإظهار لنا آخر خمس ردود.
cut -d':' -f1 /etc/passwd | head -n 5
cut -d':' -f2 /etc/passwd | tail -n 5
لاستخراج مجموعة مختارة من الحقول، قم بإدراجها في قائمة منفصلة بفواصل. سيؤدي هذا الأمر إلى استخراج الحقول من واحد إلى ثلاثة، والخامس، والسادس.
cut -d':' -f1-3,5,6 /etc/passwd | tail -n 5
من خلال تضمين grep في الأمر، يمكننا البحث عن الأسطر التي تتضمن “/bin/bash”. وهذا يعني أنه يمكننا فقط إدراج الإدخالات التي تحتوي على Bash كغلاف افتراضي لها. وعادةً ما تكون هذه هي حسابات المستخدم “العادية”. وسنطلب الحقول من واحد إلى ستة لأن الحقل السابع هو حقل الغلاف الافتراضي ونحن نعلم بالفعل ما هو – نحن نبحث عنه.
grep "/bin/bash" /etc/passwd | cut -d':' -f1-6
هناك طريقة أخرى لتضمين جميع الحقول باستثناء حقل واحد وهي استخدام --complement الخيار. هذا يعكس اختيار الحقل ويعرض كل ما لم يتم طلبه. دعنا نكرر الأمر الأخير ولكن نطلب فقط الحقل السابع. ثم سننفذ هذا الأمر مرة أخرى باستخدام --complement خيار.
grep "/bin/bash" /etc/passwd | cut -d':' -f7
grep "/bin/bash" /etc/passwd | cut -d':' -f7 --complement
يجد الأمر الأول قائمة من الإدخالات، لكن الحقل السابع لا يعطينا أي شيء للتمييز بينها، لذا لا نعرف من تشير إليه الإدخالات. في الأمر الثاني، بإضافة --complement الخيار نحصل على كل شيء ما عدا الحقل السابع.
قطع الأنابيب في قطع
بالاستمرار في استخدام ملف “/etc/passwd”، فلنستخرج الحقل الخامس. هذا هو الاسم الفعلي للمستخدم الذي يمتلك حساب المستخدم.
grep "/bin/bash" /etc/passwd | cut -d':' -f5
يحتوي الحقل الخامس على حقول فرعية مفصولة بفواصل. نادرًا ما يتم ملء هذه الحقول، لذا تظهر على شكل سطر من الفواصل.
يمكننا إزالة الفواصل عن طريق توجيه إخراج الأمر السابق إلى استدعاء آخر لـ cut . المثال الثاني من cut يستخدم الفاصلة “”، كفاصل له. -s يخبرك الخيار (المحدد فقط) cut لقمع النتائج التي لا تحتوي على الفاصل فيها على الإطلاق.
grep "/bin/bash" /etc/passwd | cut -d':' -s -f5 | cut -d',' -s -f1
نظرًا لأن الإدخال الجذر لا يحتوي على حقول فرعية فاصلة في الحقل الخامس، فسيتم قمعه، ونحصل على النتائج التي نريدها – قائمة بأسماء المستخدمين “الحقيقيين” المهيئين على هذا الكمبيوتر.
فاصل الإخراج
لدينا ملف صغير يحتوي على بعض القيم المفصولة بفواصل. الحقول الموجودة في هذه البيانات الوهمية هي:
- بطاقة تعريف: رقم معرف قاعدة البيانات
- أولاً:الاسم الأول للموضوع.
- آخر:اللقب للموضوع.
- بريد إلكتروني:عنوان بريدهم الإلكتروني.
- عنوان IP:عنوان IP الخاص بهم.
- ماركة:العلامة التجارية للسيارة التي يقودونها.
- نموذج:نوع السيارة التي يقودونها.
- سنة:السنة التي تم فيها بناء سيارتهم.
cat small.csv
إذا طلبنا من الأمر cut استخدام الفاصلة كفاصل، فيمكننا استخراج الحقول كما فعلنا من قبل. في بعض الأحيان، قد يكون لديك متطلب لاستخراج البيانات من ملف، ولكنك لا تريد تضمين فاصل الحقل في النتائج. باستخدام الأمر --output-delimiter يمكننا أن نحدد أي حرف – أو في الواقع، تسلسل الأحرف – يجب استخدامه بدلاً من الفاصل الفعلي.
cut -d ',' -f 2,3 small.csv
cut -d ',' -f 2,3 small.csv --output-delimiter=' '
الأمر الثاني يقول cut لاستبدال الفواصل بالمسافات.
يمكننا المضي قدمًا في هذا الأمر واستخدام هذه الميزة لتحويل الناتج إلى قائمة رأسية. يستخدم هذا الأمر حرف سطر جديد كفاصل للإخراج. لاحظ “$” الذي نحتاج إلى تضمينه حتى يتم التعامل مع حرف السطر الجديد، وليس تفسيره كتسلسل حرفي من حرفين.
سوف نستخدم grep لتصفية الإدخال الخاص بـ Morgana Renwick، واسأل cut لطباعة جميع الحقول من الحقل الثاني إلى نهاية السجل، واستخدام حرف السطر الجديد كفاصل للإخراج.
grep 'renwick' small.csv | cut -d ',' -f2- --output-delimiter=$''
قديم ولكنه رائع
في وقت كتابة هذه المقالة، تقترب أداة القطع الصغيرة من عيد ميلادها الأربعين، وما زلنا نستخدمها ونكتب عنها حتى اليوم. أعتقد أن تقطيع النص اليوم لا يختلف عما كان عليه قبل أربعين عامًا. أي أنه أسهل كثيرًا عندما يكون لديك الأداة المناسبة في متناول يدك.
plinko game скачать
https://plinko.kim
плинко слот
https://plinko.page
плинк казино
https://plinko.kim
как играть в игру plinko
https://plinko.page
плинко слот
https://plinko.kim