הפקודה "סד" במערכות הפעלה חינמיות מסוג GNU / Linux זה פקודה מאוד תכליתית, שכן בתורו הוא נחשב לעורך טקסט המכוון ל"זרם "במקום ל"אינטראקטיבי" כטופיים, מכיוון שהוא מקבל קובץ או קלט סטנדרטי כקלט, ואז מעבד כל שורה והתוצאה נשלחת לפלט רגיל. זאת אומרת, SED (Stream EDitor) מאפשר לנו לשנות את תוכן השורות השונות של הקובץ על בסיס סדרת פקודות או קובץ פקודה.
באופן כללי, הפקודה «sed» משמשת כמסנן, מכיוון שהוא קורא כל שורה של הזנת הנתונים שלך ואז מבצע את הפעולות המבוקשות שלרוב קוראות, מחלצות, משנות ומראות או שמורות. למרות שכוחו הוא כזה ש בנוסף זה מאפשר לנו בצורה נוחה, למחוק שורות, להקליט או להחליף מחרוזות תווים בתוך שורות הקובץ.
מבוא לפקודת "sed"
כבר בפרסומים קודמים אחרים ב DesdeLinux דיברנו והצגנו דוגמאות לגבי השימוש בפקודה האמורה, כגון: כיצד למחוק שורות ספציפיות מקובץ ... y עם מסוף: שימוש בביטויים רגולריים II: החלפות, אז הפעם נראה ישירות קצת יותר מתקדמות וכדוגמאות מעשיות המשתמשות בו.
בעיקרון הפקודה «sed» כוללת את התחביר הבא:
sed comandos_sed archivo
איפה "Command_sed" תואם מפרט אחד או יותר לגבי מה לעשות עם השורות שקוראים מהם "ארכיון".
שימוש נרחב יותר משאיר אותנו בתחביר הבא:
sed [-ns] '[direccion] instruccion argumentos'
Donde:
דוגמאות מעשיות
רשימת קבצים / תיקיות בנתיב
שורת פקודה שימושית שאפשר להשתמש בה כדי לרשום את התוכן של נתיב X שצוין ואז לזהות / לספור / לסנן פריט חיפוש ולציין פעולה שלאחר מכן לבצע.
ls -l | awk '{ print $NF }' | sed 1d
לדוגמה:
גרסה אחרת זו המשתמשת בפקודה "sed" שימושית מאוד:
find /opt/MilagrOS/file-apps/fondos_pantalla/ -type f | sed 's/^\.\///g' | xargs -n 1 basename
צור רצף מספרים
הציגו על המסך או שמרו בקובץ רצף מספרי (או כל קלט אחר) שנוצר אך בצורה אופקית (לינארית) ולא אנכית אשר בהמשך ניתן לקרוא לתהליכים אחרים.
seq 100|tr '\n' ' '|sed 's, $,\n,g'
את אותה הדוגמה ניתן לעשות על ידי שילוב הפקודה «צָמָא" עם "פרינטף" כפי שמוצג מטה:
printf '%s ' {1..100}|sed 's/ $/\n/'
מחק קבצים עם אי הכללות
מנווט דרך נתיב מערכת קבצים המחפש דפוסי קבצים להכללה ואז מוחק את שאר התוכן. שימושי מאוד לניקוי מדויק וזהיר.
find /opt/MilagrOS/file-apps/fondos_pantalla/ -type f | sed -e '/.*\.txt$/d' -e '/.*\.exe$/d' | xargs rm
צור כתובת MAC וירטואלית
שלב זה יכול להיות שימושי למשימות אבטחה או הגנה על המחשב בעת גלישה באתרים מסוכנים או ביצוע משימות פריצה.
MAC=`(date; cat /proc/interrupts) | md5sum | sed -r 's/^(.{10}).*$/\1/; s/([0-9a-f]{2})/\1:/g; s/:$//;'` ; echo $MAC
את אותה השפעה ניתן להשיג באמצעות הפקודה "sed" בשילוב עם פקודות אחרות, כמוצג להלן:
openssl rand -hex 6 | sed 's/\(..\)/\1:/g; s/.$//'
od -An -N10 -x /dev/random | md5sum | sed -r 's/^(.{10}).*$/\1/; s/([0-9a-f]{2})/\1:/g; s/:$//;'
od /dev/urandom -w6 -tx1 -An|sed -e 's/ //' -e 's/ /:/g'|head -n 1
לדוגמה:
שנה באופן זמני את הודעת המסוף
זה יכול לעזור לנו להוסיף באופן זמני פרמטרים בהנחיה שלנו שיכולים להיות שימושיים לנו בזמן שאנחנו מבצעים פעילות מיוחדת. בדוגמה זו נשנה רק את אופן הצגת ההנחיה.
export PS1="C:\$( pwd | sed 's:/:\\\\\\:g' )\\> "
נהל את הפלט של הפקודה "ps"
סדר פקודה מעשי מאוד המאפשר לעצב את פלט הפקודה «ps», כלומר, מה שמתקבל ממנהל תהליכי הטרמינל.
sudo ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu | sed "/^ 0.0 /d"
לדוגמה:
ניתן ליישם זאת לתהליכים על פי אחוז הזיכרון הנצרך:
sudo ps -e -o pmem,nice,state,cputime,args --sort pmem | sed "/^ 0.0 /d"
אני מקווה שהדוגמאות האלה של שורת הפקודה באמצעות הפקודה "sed" יהיו שימושיות מאוד. והם משמשים לשימוש ישירות מהקונסולה או בעקיפין על ידי הכנסתם לתסריט (משימה אוטומטית).
בפוסט הבא על Shell Scripting נחקור פקודות אחרות.
אם אתה רוצה ללמוד קצת יותר על הפקודה "sed" בקר בקישור הזה "מדריך וקצר מדריך ליוניקס וללינוקס"אוֹ"שימוש בסיסי»ואם אתה רוצה ללמוד עוד על Shell Scripting בבלוג שלנו, תוכלו להציץ בפרסומים האחרים שלנו בנושא, על ידי לחיצה כאן: תסריט DesdeLinux.