مختون
• مختون يستخدم البرنامج لاستخراج جزء من النص من سطر وإخراج القسم المستخرج إلى الإخراج القياسي. يمكنه قبول وسائط متعددة للملفات أو مدخلات من الإدخال القياسي.
يعد تحديد قسم السطر المراد استخراجه أمرًا محرجًا إلى حد ما ويتم تحديده باستخدام الخيارات التالية:
الجدول 20-3: قص خيارات التحديد
وصف الخيار
وصف الخيار
-c char_list استخرج جزء السطر المحدد بواسطة char_list. قد تتكون القائمة من واحد أو أكثر من النطاقات الرقمية مفصولة بفواصل.
-f قائمة_الميدان استخراج حقل واحد أو أكثر من السطر كما هو محدد بواسطة
قائمة_الميدان. قد تحتوي القائمة على حقل واحد أو أكثر أو نطاقات حقول مفصولة بفاصلات.
-d delim_char متى -f محدد ، استخدم delim_char كحرف تحديد المجال. بشكل افتراضي ، يجب فصل الحقول بواسطة حرف جدولة واحد.
--قم باستخراج سطر النص بأكمله ، باستثناء تلك الأجزاء
المحدد من قبل -c و / أو -f.
كما نرى ، الطريق مختون مقتطفات النص غير مرنة نوعًا ما. مختون هو أفضل استخدام لاستخراج نص من الملفات التي تنتجها برامج أخرى ، بدلا من النصوص التي يكتبها البشر مباشرة. سنلقي نظرة على موقعنا توزيعات.txt لمعرفة ما إذا كان "نظيفًا" بما يكفي ليكون عينة جيدة لملفات مختون أمثلة. إذا استخدمنا قط مع الالجائزة -A الخيار ، يمكننا معرفة ما إذا كان الملف يلبي متطلبات الحقول المفصولة بعلامات جدولة:
[me @ linuxbox ~] $ قطة -A distros.txt
SUSE ^ I10.2 ^ I12 / 07/2006 $
Fedora^I10^I11/25/2008$ SUSE^I11.0^I06/19/2008$
Ubuntu^I8.04^I04/24/2008$ Fedora^I8^I11/08/2007$ SUSE^I10.3^I10/04/2007$
Ubuntu^I6.10^I10/26/2006$ Fedora^I7^I05/31/2007$ Ubuntu^I7.10^I10/18/2007$ Ubuntu^I7.04^I04/19/2007$
[me @ linuxbox ~] $ قطة -A distros.txt
SUSE ^ I10.2 ^ I12 / 07/2006 $
Fedora^I10^I11/25/2008$ SUSE^I11.0^I06/19/2008$
Ubuntu^I8.04^I04/24/2008$ Fedora^I8^I11/08/2007$ SUSE^I10.3^I10/04/2007$
Ubuntu^I6.10^I10/26/2006$ Fedora^I7^I05/31/2007$ Ubuntu^I7.10^I10/18/2007$ Ubuntu^I7.04^I04/19/2007$
SUSE ^ I10.1 ^ I05 / 11/2006 $
Fedora^I6^I10/24/2006$ Fedora^I9^I05/13/2008$ Ubuntu^I6.06^I06/01/2006$ Ubuntu^I8.10^I10/30/2008$ Fedora^I5^I03/20/2006$
SUSE ^ I10.1 ^ I05 / 11/2006 $
Fedora^I6^I10/24/2006$ Fedora^I9^I05/13/2008$ Ubuntu^I6.06^I06/01/2006$ Ubuntu^I8.10^I10/30/2008$ Fedora^I5^I03/20/2006$
إن شكلها جيد. لا توجد مسافات مضمنة ، فقط علامات تبويب مفردة بين الحقول. نظرًا لأن الملف يستخدم علامات التبويب بدلاً من المسافات ، فسنستخدم الامتداد -f خيار لاستخراج حقل:
[me @ linuxbox ~] $ قص و 3 توزيعات
12/07/2006
11/25/2008
06/19/2008
04/24/2008
11/08/2007
10/04/2007
10/26/2006
05/31/2007
10/18/2007
04/19/2007
05/11/2006
10/24/2006
05/13/2008
06/01/2006
10/30/2008
03/20/2006
[me @ linuxbox ~] $ قص و 3 توزيعات
12/07/2006
11/25/2008
06/19/2008
04/24/2008
11/08/2007
10/04/2007
10/26/2006
05/31/2007
10/18/2007
04/19/2007
05/11/2006
10/24/2006
05/13/2008
06/01/2006
10/30/2008
03/20/2006
لأن لدينا توزيعات الملف محدد بعلامات جدولة ، فمن الأفضل استخدامه مختون لاستخراج الحقول بدلاً من الأحرف. هذا لأنه عندما يكون الملف محددًا بعلامات جدولة ، فمن غير المحتمل أن يحتوي كل سطر على نفس عدد الأحرف ، مما يجعل حساب مواضع الأحرف داخل السطر أمرًا صعبًا أو مستحيلًا. ومع ذلك ، في مثالنا أعلاه ، قمنا الآن باستخراج حقل يحتوي لحسن الحظ على بيانات ذات طول متطابق ، حتى نتمكن من إظهار كيفية عمل استخراج الأحرف عن طريق استخراج السنة من كل سطر:
[me @ linuxbox ~] $ قطع -f 3 توزيعات. txt | قطع -c 7-10
2006
2008
2008
2008
2007
2007
2006
2007
[me @ linuxbox ~] $ قطع -f 3 توزيعات. txt | قطع -c 7-10
2006
2008
2008
2008
2007
2007
2006
2007
2007
2007
2006
2006
2008
2006
2008
2006
2007
2007
2006
2006
2008
2006
2008
2006
عن طريق الركض مختون للمرة الثانية في قائمتنا ، يمكننا استخراج مواقع الشخصيات من 7 إلى 10 ، والتي تتوافق مع السنة في حقل التاريخ لدينا. ال 7-10 التدوين هو مثال على النطاق. ال مختون تحتوي صفحة الدليل على وصف كامل لكيفية تحديد النطاقات.
توسيع علامات التبويب
الأهداف و توزيعات.txt تم تنسيق الملف بشكل مثالي لاستخراج الحقول باستخدام مختون. ولكن ماذا لو أردنا ملفًا يمكن التلاعب به بالكامل مختون بالحروف وليس الحقول؟ سيتطلب ذلك منا استبدال أحرف الجدولة داخل الملف بعدد المسافات المقابل. لحسن الحظ ، تتضمن حزمة GNU Coreutils أداة لذلك. اسم الشيئ توسيع، يقبل هذا البرنامج إما وسيطة ملف واحدة أو أكثر أو مدخلات قياسية ، ويخرج النص المعدل إلى الإخراج القياسي.
إذا قمنا بمعالجة ملف توزيعات.txt ملف مع توسيعيمكننا استخدام قطع ج لاستخراج أي نطاق من الأحرف من الملف. على سبيل المثال ، يمكننا استخدام الأمر التالي لاستخراج سنة الإصدار من قائمتنا ، عن طريق توسيع الملف واستخدام مختون لاستخراج كل حرف من المركز الثالث والعشرين حتى نهاية السطر:
[me @ linuxbox ~] $ قم بتوسيع ملف distros.txt | قطع ج 23-
يوفر Coreutils أيضًا ملف غير متسع برنامج لاستبدال علامات التبويب للمسافات.
عند العمل مع الحقول ، من الممكن تحديد محدد حقل مختلف بدلاً من حرف الجدولة. هنا سنقوم باستخراج الحقل الأول من / الخ / باسود ملف:
[me @ linuxbox ~] $ قطع -d ':' -f 1 / etc / passwd | رئيس
الجذر الخفي
[me @ linuxbox ~] $ قطع -d ':' -f 1 / etc / passwd | رئيس
الجذر الخفي
bin sys sync games man lp mail news
bin sys sync games man lp mail news
باستخدام -d الخيار ، نحن قادرون على تحديد حرف النقطتين كمحدد المجال.