الأمر "sed" في أنظمة التشغيل الحرة من نوع GNU / Linux ، يعد أمرًا شديد التنوع ، لأنه بدوره يعتبر محرر نصوص موجه إلى "التدفق" بدلاً من "التفاعلي" مثل المحرر النموذجينظرًا لأنه يقبل ملفًا أو إدخالًا قياسيًا كمدخلات ، فإنه يعالج كل سطر ويتم إرسال النتيجة إلى الإخراج القياسي. ذلك بالقول، يسمح لنا SED (Stream EDitor) بتعديل محتوى الأسطر المختلفة للملف بناءً على سلسلة من الأوامر أو ملف أوامر.
بشكل عام ، يتم استخدام الأمر "sed" كعامل تصفية، لأنه يقرأ كل سطر من إدخال البيانات الخاصة بك ثم يقوم بتنفيذ الإجراءات المطلوبة التي عادة ما تتم قراءتها واستخراجها وتعديلها وإظهارها أو حفظها. على الرغم من أن قوتها من هذا القبيل بالإضافة إلى أنه يتيح لنا بطريقة مريحة حذف السطور أو السجلات أو استبدال سلاسل الأحرف داخل أسطر الملف.
مقدمة إلى الأمر "sed"
بالفعل في المنشورات السابقة الأخرى في DesdeLinux لقد تحدثنا وأظهرنا أمثلة حول استخدام الأمر المذكور، مثل: كيفية حذف أسطر معينة من ملف ... y مع المحطة الطرفية: استخدام التعبيرات العادية II: البدائل، لذلك هذه المرة سنرى بشكل مباشر أمثلة أكثر تقدمًا وعملية لاستخدامها.
في الأساس ، يحتوي الأمر «sed» على النحو التالي:
sed comandos_sed archivo
حيث "Command_sed" يتوافق مع واحد أو أكثر من المواصفات حول ما يجب فعله مع الأسطر المقروءة منها "أرشيف".
الاستخدام الأكثر شمولاً يترك لنا بناء الجملة التالي:
sed [-ns] '[direccion] instruccion argumentos'
حيث:
أمثلة عملية
سرد الملفات / المجلدات في مسار
سطر أوامر مفيد يمكن استخدامه لسرد محتوى مسار 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» ، أي ما يتم الحصول عليه من Terminal Process Manager.
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" فقم بزيارة هذا الرابط "البرنامج التعليمي ودليل موجز لنظامي التشغيل Unix و Linux"أو"الاستخدام الأساسي»وإذا كنت تريد معرفة المزيد حول البرمجة النصية في شل في مدونتنا الخاصة، يمكنك إلقاء نظرة على إصداراتنا الأخرى حول هذا الموضوع ، من خلال النقر هنا: البرمجة النصية DesdeLinux.