الصفحة الرئيسية » howto » كيفية إزالة خطوط من منتصف ملف باستخدام محطة لينكس

    كيفية إزالة خطوط من منتصف ملف باستخدام محطة لينكس

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

    لمعرفة أرقام الأسطر ، قام grep -n بسيط بتنفيذ المهمة (تقوم الوسيطة -n بإخراج أرقام الأسطر). هذا جعل من السهل معرفة ما احتاج لاستخراجه.

    grep -n wp_posts howtogeekdb010114.bak | أكثر من

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

    4160: - هيكل الجدول للجدول 'wp_posts' 4163: DROP TABLE IF exISTS 'wp_posts'؛ 4166: CREATE TABLE 'wp_posts' (4203: - Dumping data for table 'wp_posts' 4206: LOCK TABLES 'wp_posts' WRITE؛ 4207: / *! 40000 ALTER TABLE 'wp_posts' DISABLE KEYS * /؛ 4208: INSERT INTO 'wp_posts "القيم (1،2 ،" 2006-09-11 05:07:23 "،" 2006-09-11

    يمكنك ، بالطبع ، توجيه الإخراج من grep إلى ملف آخر ، مثل هذا:

    grep keyword filename.txt> outputfile

    في حالتي ، لم يرغب ذلك في العمل ، لأنني لم أستطع استيراد النسخة الاحتياطية الناتجة لسبب ما. لذلك ، وجدت طريقة مختلفة لاستخراج الخطوط باستخدام sed ، وهذه الطريقة نجحت.

    sed -n '4160،4209p' howtogeekdb0101140201.bak> outputfile

    في الأساس ، يكون بناء الجملة مثل هذا ، مع التأكد من استخدام الوسيطة n ، وتضمين "p" بعد رقم السطر الثاني.

    sed -n 'FIRSTLINENUMBER، LASTLINENUMBERp' filename> outputfilename

    بعض الطرق الأخرى التي يمكنك بها سحب خطوط محددة في منتصف الملف؟ يمكنك استخدام الأمر "head" مع الوسيطة + number للقراءة فقط من خلال أول س من سطور الملف ، ثم استخدام الذيل لاستخراج تلك السطور. ليس أفضل خيار ، الكثير من النفقات العامة. خيار أبسط؟ يمكنك استخدام أمر الانقسام لتحويل الملف إلى ملفات متعددة مباشرة عند رقم السطر الذي تريده ، ثم استخراج الخطوط باستخدام الرأس أو الذيل.

    أو يمكنك فقط استخدام sed.