כיצד להסיר קווי מאמצע של קובץ באמצעות מסוף לינוקס
כאשר אתה מנהל את השרתים שלך, אחד הדברים שאתה בסופו של דבר צריך לעשות על בסיס חצי קבוע הוא לחלץ דברים מאמצע הקובץ. אולי זה קובץ יומן, או שאתה צריך תוספת טבלה אחת מאמצע קובץ הגיבוי MySQL שלך, כמו שעשיתי.
כדי להבין את מספרי השורות, פקודה פשוטה של grep-n עשתה את העבודה (הטעינה -n יוצרת את מספר השורות). זה עשה את זה קל להבין מה אני צריך לחלץ.
grep -n wp_posts howtogeekdb010114.bak | יותר
תוצאות במשהו כזה, המציג את מספרי הקו על הצד השמאלי של הפלט. צנרת הכל לתוך "עוד" מוודא שאתה יכול לראות את השורה הראשונה בלי זה גלילה על ידי. עכשיו יש לך את מספר הקו כדי להתחיל עם, וזה כנראה אחד כדי לסיים עם.
4160: - מבנה טבלה עבור 'wp_posts' טבלה 4163: DROP TABLE אם 'wp_posts' EXISTS; 415: יצירת טבלה 'wp_posts' (4203: - נתוני הטלה עבור טבלה 'wp_posts' 4206: 'wp_posts' של טבלאות 'LOCK': 4207: / * 40000 ALTER TABLE 'wp_posts' מקשי חיסור * /; 4208: INSERT INTO 'wp_posts 'VALUES (1,2,' 2006-09-11 05:07:23 ',' 2006-09-11
אתה יכול, כמובן, רק צינור הפלט מ grep לקובץ אחר, כמו זה:
grep מילת מפתח filename.txt> outputfile
במקרה שלי, זה לא רוצה לעבוד, כי אני לא יכול לייבא את הגיבוי שהתקבל מסיבה כלשהי. אז, מצאתי דרך אחרת כדי לחלץ את השורות באמצעות sed, ושיטה זו עבדה.
sed-n '4160,4209p' howtogeekdb0101140201.bak> outputfile
בעיקרון התחביר הוא כמו זה, הקפד להשתמש בטענה -n, ולכלול את "p" אחרי מספר השורה השנייה.
sed -n 'FIRSTLINENUMBER, LASTLINENUMBERP' שם קובץ> outputfilename
כמה דרכים אחרות אתה יכול לשלוף שורות ספציפיות באמצע הקובץ? אתה יכול להשתמש בפקודה "head" עם ארגומנט + number כדי לקרוא את השורות הראשונות של קובץ, ולאחר מכן להשתמש בזנב כדי לחלץ את השורות. לא את האפשרות הטובה ביותר, הרבה תקורה. אפשרות פשוטה יותר? ניתן להשתמש בפקודה המפוצלת כדי להפוך את הקובץ למספר קבצים ימינה במספר הקו הרצוי ולאחר מכן לחלץ את השורות באמצעות ראש או זנב.
או שאתה יכול פשוט להשתמש sed.