בהזדמנויות מסוימות עלינו למחוק שורה ספציפית מקובץ או מספר, למשל, קרה לי שהייתה לי רשימה שלמה של קבצים ואני צריך למחוק את שורה מס '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 sed
לגבי
תרומה טובה מאוד 😉
תודה
אגב, קיבלנו את הדוא"ל שלך עכשיו אני עונה לך 😀
לגבי
ככהן גדול לטרמינל, לשרתים ולחיבורי ssh אני מגיע אליך, הו נהדר KZKG ^ גאארה, ואני שואל אותך: איפה אוכל לקבל הדרכה ברמת בורותי שמאפשרת לי להשתמש בחיבורי ssh בין שתי מכונות מרוחקות ברשתות שונות כדי לשתף קבצי טקסט, pdf, תמונה וסאונד (mp3) ....
???
ברצינות, האם תוכל להדריך אותי בהקשר זה, יש לי שתי מכונות, אחת בעבודה ואחת בבית ואני זקוק לחיבור ssh ביניהן (מכיוון שכפי שאני מבין את זה, ssh מאפשרת לשתף תוכן בין מכונות, האם אני טועה?).
ואם אני טועה, על איזה יישום אתה ממליץ?
ואיפה אני מוצא הדרכה בסיסית בנושא זה?
scp
משתמש scp @ machine_address: משתמש נתיב @ machine_address: נתיב.
תחביר זהה ל- cp, מקור -> יעד.
הופעת גבר, היית אבוד.
עצה טובה!
טיפ מעניין ... xD
האם אתה מכיר במקרה אחד שגורם לטקסט מודגש להתבלט?
כלומר, יש לי קובץ txt שהוא מילון, יש לו יותר מ -10000 שורות ואני רוצה שהוא יסמן טקסט מסוים לפני ":" השעיית הנקודות וביצועו אחד אחד זה יותר מדי.
שלום,
קובץ txt הוא טקסט רגיל, כשמו כן הוא ... רגיל, ללא פורמטים או משהו דומה, אני מצטער אבל אני חושב שמה שאתה שואל לא יכול להיעשות, נכון? 🙁
לגבי
למעשה זה יכול, אבל תצטרך לדעת את פורמט היעד.
לְמָשָׁל:
הד $ (הד "רוברט: שלום. שנה כאן" | sed's / \ ./. \\ e [40; 31m /; s / \: /: \\ e [40; 35m / ')
זה עניין של התמודדות.
הדרך השנייה למחוק שניתן להשתמש בה היא sed '/' $ 1 '/ d', אך אתה צריך להיות בטוח בעניין.
ואז סיים לשמור אותו ב * .odt
האם אין דרך קלה יותר לעשות זאת באמצעות LibreOffice?
האם תוכל למחוק חלק משורה ולהשאיר את השאר?
נניח שאני רוצה למחוק הכל מול מילה בשורה מסוימת.
או מחק את כל מה שעוקב אחרי המילה הזו.
כן, זה עניין של משיכת רגקס (אם יש צורך בנאדם sed -r, –regexp-extended)
החל ממה שאני מוצא
הד «רוברט: שלום. שנה כאן »| sed's / Change // '
עם דפוס מוגדר היטב ועם. (תו אחד) ו- * (יותר מאחד)
לאחר:
הד «רוברט: שלום. שנה כאן »| sed's / Change. * // '
לפני:
הד «רוברט: שלום. שנה כאן »| sed של /. * שנה // '
אם חשוב שהמילה מופיעה
הד «רוברט: שלום. שנה כאן »| sed's / Change. * / Change / '
או יותר משוכלל
בשורה המכילה את רוברט את מה שהולך אחרי צ'יינג '
הד - e «פריץ: שלום. שנה כאן \ n רוברט: שלום. שנה כאן »| sed '/Robert/s/Cambio.*//'
או כמו בהתחלה הוצא את השורה השנייה ועבד את השאר
הד - e «פריץ: שלום. שנה כאן \ n רוברט: שלום. שנה כאן \ nאחר »| sed -e 2d -e 's / Change. * //'
הד - e «פריץ: שלום. שנה כאן \ n רוברט: שלום. שנה כאן \ nאחר »| sed '2d; s / Change. * //'
תודה, זה מאוד שימושי עבורי.
מאמר נחמד, אחד מאלה שאני אוהב, כמה נהדר SysAdmin!
מה היו חיינו בלי סד, ווק, פרל, גרפ, זנב, ראש, "Emacs" וכל כך הרבה כלים חיוניים אחרים!?
תודה, זה היה מאוד מועיל.
שלום, ואיך תוכל למחוק את השורות 1,4 ו- 10 מקובץ באותה פקודה?