בהזדמנויות מסוימות עלינו למחוק שורה ספציפית מקובץ או מספר, למשל, קרה לי שהייתה לי רשימה שלמה של קבצים ואני צריך למחוק את שורה מס '27 מכל אלה (שורה מס' 27 היא של ACL , נורמה, כלל, תצורה), אני יכול לערוך קובץ לפי קובץ או פשוט להשיג את מה שאני צריך באמצעות הפקודה צמא וסקריפט bash (אופציונלי).
אבל, בואו ננסה קובץ בודד פשוט למדי.
יש לנו את הקובץ distros-deb.txt המכיל את זה:
דביאן
קובונטו
ארכינוס
פתרונות
נענע
במילים אחרות, הקובץ distros-deb.txt הוא בו אנו מכניסים את ההפצות מבוססות דביאן, אך שם אנו רואים כי בשורה מס '3 "ארכלינוקס", הפצה שברור שאין לה שום קשר לדביאן, ולכן עלינו לבטל את הקו הזה. כדי לחסל את שורה מס '3 של אותו קובץ, נניח את הדברים הבאים:
sed "3d" distros-deb.txt > distros-deb-ok.txt
להסביר את השורה הזו קל מעט, עם צמא "3d" אנו מציינים כי נמחק שורה שורה 3 עם distros-deb.txt אנו מציינים על איזה קובץ לעבוד, כלומר, מחק את שורה מס '3 של הקובץ הזה, עד כאן אם אנו לוחצים על Enter זה יראה לנו מה אנחנו רוצים אבל במסוף, אז עם > distros-deb-ok.txt אנו מציינים שבמקום להציג את התוצאה במסוף, הוא שם אותה בקובץ בשם זה.
מה פשוט?
כמו כן, אנו יכולים להימנע משימוש ב- > distros-deb-ok.txt באמצעות פרמטר ראוי של צמא, הפרמטר -i
כלומר, במקרה שנרצה למחוק את השורה מהקובץ ולשמור אותה עם אותו שם (ולא בקובץ אחר), פשוט הוסף את הפרמטר -i :
sed -i "3d" distros-deb.txt
פעולה זו תסיר את שורה מס '3 מ- distros-deb.txt ותשמור אותה.
מה אם אני רוצה טווח של שורות, כלומר להסיר את השורה מספר 3 אבל גם את המס '4 ואת מספר 5? כדי להשיג זאת שמנו את הטווח שבין 3 ל -5, כלומר:
sed -i "3,5d" distros-deb.txt
וזה יראה לי רק דביאן וקובונטו
אז מה אם אני רוצה למחוק משורה 2 לשורה האחרונה, כשאני לא יודע את כל השורות?
פשוט השתמש בסמל הדולר - »$
sed -i "2,$d" distros-deb.txt
במקרה שתרצה לבטל מהשורה הראשונה למספר 4 אז פשוט שמנו את הערך 1 בהתחלה:
sed -i "1,4d" distros-deb.txt
זה היה הכל, טיפ שימושי מאוד כשאתה רוצה ליצור סקריפטים bash לאוטומציה של משימות ואתה צריך לשנות ולבטל שורות של קבצי תצורה, כדי לשנות נוכל להשתמש צמא o פרל, כמו גם לחסל אנחנו כבר יודעים איך לעשות את זה עם sed
לגבי