السلام عليكم
اخباركم ايه
ده الجزء الاول في ال sed toutroial
الدرس مهدي الي -cyberray - وحشتنا ياعم و linuxer
و Raiden و لجورس كله لان في ناس كتير عايز اكتبها بس لو كتبتها اقروا الاهدء وانسوا الموضوع و ل MySQL وlinuxac.org كله
مقدمة ::
sed > stream editoer
وهو عباره عن محرر نصوص غير تفاعلي noninteractive ده لانك بتطبق اوامر علي ال text او النص الي انت شغال عليه
طرقة عمله::::
البرنامج بيقري سطر سطر من الملف وبيحط السطر الاول في الذاكره وبينفذ عليه الاوامر ويرجعه تاني متعدل ويكرر علي السطر التاني لحد ما يخلص
وال outpout في الغالب هو ال screen الا لو انت قلتله يطلع في ملف باستخدام w او < وحيتشرح باذن الله
امر التبديل ...... the substitute command
ال option هو s كالتالي
الصيغه العامه
طبعا انا هنا استخدمت ال pipe لاني مش محددله ملف فبالتالي هيكون هو ك argument لل echo مفهوم
طبعا النتيجه حيتغير storm الي ahmed
طيب لو ملف ؟؟
بافتراض ان الملف storm بيحتوي علي الجمله الي انا كتبتها فوق
اوك سعاتك عايز تطلع الناتج في ملف زي ماقلت فوق
<
حيبقي
طيب جرب تحط الكلام ده في ملف
storm hackobacko storm linuxer storm cyberray
واعمل
واعرض الملف
تلاقيه عمل بس اول storm الي ahmed لان ال sed بيعمل تغير لاول حاجه يقابلها ويقوم مخلص لان احنا قلنا حينقل علي السطر التاني اكيد
طيب الحل هنا استخدام ال global وديت ال option بتاعها g
كده احنا وصلنا للي عازينه
طيب سعاتك في اكتر من modifay عايز تعمله اكتر من تعديل يعني مش معقول حتقعد تكتب الامر 100 مره علي حسب الي عايز تعدله
يبقي في اكتر من حل
الحل الاول
: استخدام ال e- تمام
كود
ممله جدا عمال تكتب e- e- e- وزهقت
جرب ال فاصله المنقوطه كالاتي
ملحوظه:
الفاصله المنقوطه يجب ان تكون اول مايقابل ال / يعني مينفعش بعيدها مسافه
تمام نيجي بقي للاحسن من كل ده انت عارف اننا بنستخدم ال ' ' عشان نحدد الكلام الي sed حيستقبله مظبوط
طيب اعمل الاتي
واتك انتر
حتلاقي ظهرلك علامه في الغالب > وكمل الاوامر كالاتي
كود
طبعا الامر sed مقفلش المجموعه من الاوامر غير لما قابل ال ' قدامه
طيب عندك ملف كالاتي
mysweety gone
mysweety gone
linux gone
ahmed gone
storm gone
وانت مش عايز تغير كلمة gone لكله انت محدد كلمات عايز تغيرها
كل كلمة تحمل mysweety الي قدامها حيتغير من gone الي Not here طبعا انت ممكن تعمل اكتر من تعديل زي ماقلنا فوق
طيب نيجي بقي لاستخدام حلو
انت معاك ملف فيه مجموعه من الاوامر ل sed وليكن مثلا السكريبت بتاع سفاح احنا بس حناخد الي هو عايز يغيرها ونعدل عليها لينا زي الاتي
الف شكر لسفاح
احنا عارفين ان ديت عايزه تتغير في ملف ال php.ini ومستتقلين نكتبها وهي موجوده في ملف لوحدها بالطريقه ديت
كل الي عليك الاتي
استخدمنا f- بدل مانكتب ال
مفيده في حاجه حلوه الي هي لو انت بتعدل في حاجات كتير قويييييي ممكن تدمجها في ملف واحد زي ماعملنا بدل ماتتعزب في ال shell
طيب لو سعاتك عايز تححد رقم السطور الي عايز تعدل فيها
نرجع للمثال ده
mysweety gone
mysweety gone
linux gone
ahmed gone
storm gone
اسف طبعا علي العبط الي انا كتبه بس دماغي مش موصلاني لاكتر من كده نظرا للتفكير الي في دماغي دلوقتي blink.gif
انت عايز تعدل السطر الرابع والخامس بس
طيب لو انت مش عايز تطلع اي حاجه علي الشاشه بس عايز تفنذ وخلاص
تستخدم n- حقيقة هي لوحدها مش حتجدي اي نفع لوحدها من غير p وديت معناها print يعني اطبع المحدد فقط
خلينا نشوف مثال علي n- لوحدها بس
افتح الملف مش حتلاقي اي حاجه خااااااااااااااااالص
طيب ايه يعني انا استفدت ايه انت استفدت انك ممكن تطبع الي انت محتاجه بس زي كده
حيطبع فقط الي تم تعديله واظن ديت حاجه ممكن تفيد ناس كتير صح ؟!
طيب لو كله الا السطرين دول
كود
لاحظ انا استخدمت ! علامه النفي not مفهوم
طيب نيجي للحذف انت في كلمه عايز تحذها سهله اعمل الاتي
كل كلمات الي باسم storm راحت مع الرياح laugh.gif
عقبالنا يارب unsure.gif
سعاتك مش مبسوط كده هو بيمسحلك اي حاجه في storm ومنتاش عايز كده انت عايزه يمسح الي بيبتدي ب storm نيجي بقي للبتوع دول $ ^ انا بسميها مؤشرات تحديد انت سميها زي ماتسميها
فقط اذا كان السطر ينتهي ب storm
فقط اذا كان يبتدي ب storm
طيب لو السطر ال 5 او السادس بس ويكون بيبتدي ب storm
وده يذكرني باضافه في الجريب
كود
واضحه اظن
بالمناسبه دمج ال ^$ يشكل سطر فاضي يعني لو انت جيت حذفت السطر الفاضي
كود
وده يجبلنا امر جديد d يعني delete قشطه
طبعا s مش موجود لان s امر استبدال حتسبدل وتحذف ياخبر انا خلاص هييست
:thumpsup_green:
مثلا انت عايز تحذ السطر الي فيه اي كلمة اسمها storm >مخنوق منه tongue.gif
كود
تمام طبعا انت عرفت تحديد رقم السطور وعرفت البدايه والنهايه ولو معرفتش :angry_red:
كود
يحذف الي بينتهي ب storm
سعاتك بقي عايز تعدل سطر كامل هنا s مش هو الي انت عايزه لاده c cool.gif
شوف الاتي
كود
مع c مش حنستخدم / لا حنستخدم backslash \
اخر حاجه في الجزء ده ال append او الدمج
ال option هو a
طبعا حيضيف في بداية الملف ولو في النهايه
ايوه شاااطر
ولو بعد السطر الثالث
لكن لو في مكان السطر الثالث مش حيبقي a حيبقي i ك insert لان ال a بيدور علي بدايه بعد المكان المحدد
خلاص كلمه كمان ودمت
عارف الامر head الي بيطبعلك اول 10 سطور من ملف معين
q الي حد ماشببهه لانك ممكن تخليه يعدل لحد حد معين من التعديلات زي كده
طبعا هي بعد 5 تعديلات حيطلع
السبب بقي الي خلاني اقول انه شبه head انه ممكن تعمل كده
كود
حيقري اول 100 سطر بس
واظن بعد كمية اسم storm الي اتذكرت في الموضوع احب اوضح حاجه ده مش حب ذات بس لان الكلمه لها معني خاص في حياتي
اشوف وشكم في الجزء التاني لو فضلت عايش اساسا ههههه
اعتزر عن اللهجه المصريه وسوف اقوم بتعديله:gotcha:
c u all cheers
اخباركم ايه
ده الجزء الاول في ال sed toutroial
الدرس مهدي الي -cyberray - وحشتنا ياعم و linuxer
و Raiden و لجورس كله لان في ناس كتير عايز اكتبها بس لو كتبتها اقروا الاهدء وانسوا الموضوع و ل MySQL وlinuxac.org كله

مقدمة ::
sed > stream editoer
وهو عباره عن محرر نصوص غير تفاعلي noninteractive ده لانك بتطبق اوامر علي ال text او النص الي انت شغال عليه
طرقة عمله::::
البرنامج بيقري سطر سطر من الملف وبيحط السطر الاول في الذاكره وبينفذ عليه الاوامر ويرجعه تاني متعدل ويكرر علي السطر التاني لحد ما يخلص
وال outpout في الغالب هو ال screen الا لو انت قلتله يطلع في ملف باستخدام w او < وحيتشرح باذن الله
امر التبديل ...... the substitute command
ال option هو s كالتالي
الصيغه العامه
كود:
sed 's /<old>/<new>/'
كود:
echo storm man is here | sed 's /storm/ahmed/'
طبعا النتيجه حيتغير storm الي ahmed
طيب لو ملف ؟؟
كود:
sed 's /storm/ahmed/' storm
اوك سعاتك عايز تطلع الناتج في ملف زي ماقلت فوق
<
حيبقي
كود:
sed 's/storm/ahmed/'storm>storm2
storm hackobacko storm linuxer storm cyberray
واعمل
كود:
sed 's/storm/ahmed/'storrm >storm2
تلاقيه عمل بس اول storm الي ahmed لان ال sed بيعمل تغير لاول حاجه يقابلها ويقوم مخلص لان احنا قلنا حينقل علي السطر التاني اكيد
طيب الحل هنا استخدام ال global وديت ال option بتاعها g
كود:
sed 's/storm/ahmed/g'storm>storm2
طيب سعاتك في اكتر من modifay عايز تعمله اكتر من تعديل يعني مش معقول حتقعد تكتب الامر 100 مره علي حسب الي عايز تعدله
يبقي في اكتر من حل
الحل الاول
: استخدام ال e- تمام
كود
كود:
sed -e 's/storm/ahmed/g' -e 's/hackobacko/linuxman/g'storm>storm2
جرب ال فاصله المنقوطه كالاتي
ملحوظه:
الفاصله المنقوطه يجب ان تكون اول مايقابل ال / يعني مينفعش بعيدها مسافه
كود:
sed 's/storm/ahmed/; s/linuxer/bro/;g'storm>storm2
طيب اعمل الاتي
كود:
sed '
حتلاقي ظهرلك علامه في الغالب > وكمل الاوامر كالاتي
كود
كود:
s /storm/ahmed s /hackobacko/linux ' storm >storm2
طبعا الامر sed مقفلش المجموعه من الاوامر غير لما قابل ال ' قدامه
طيب عندك ملف كالاتي
mysweety gone
mysweety gone
linux gone
ahmed gone
storm gone
وانت مش عايز تغير كلمة gone لكله انت محدد كلمات عايز تغيرها
كود:
sed '/mysweety/ s/gone/not here/' storm >storm2
طيب نيجي بقي لاستخدام حلو
انت معاك ملف فيه مجموعه من الاوامر ل sed وليكن مثلا السكريبت بتاع سفاح احنا بس حناخد الي هو عايز يغيرها ونعدل عليها لينا زي الاتي
كود:
s/safe_mode = Off/safe_mod = On
احنا عارفين ان ديت عايزه تتغير في ملف ال php.ini ومستتقلين نكتبها وهي موجوده في ملف لوحدها بالطريقه ديت
كل الي عليك الاتي
كود:
sed -f script /usr/local/lib/php.ini > /usr/local/lib/php.ini.new
كود:
s/safe_mode = Off/safe_mod = On
طيب لو سعاتك عايز تححد رقم السطور الي عايز تعدل فيها
نرجع للمثال ده
mysweety gone
mysweety gone
linux gone
ahmed gone
storm gone
اسف طبعا علي العبط الي انا كتبه بس دماغي مش موصلاني لاكتر من كده نظرا للتفكير الي في دماغي دلوقتي blink.gif
انت عايز تعدل السطر الرابع والخامس بس
كود:
sed '4,5 s/gone/not here/'
تستخدم n- حقيقة هي لوحدها مش حتجدي اي نفع لوحدها من غير p وديت معناها print يعني اطبع المحدد فقط
خلينا نشوف مثال علي n- لوحدها بس
كود:
sed -n 's/storm/ahmed/'>storm>storm2
طيب ايه يعني انا استفدت ايه انت استفدت انك ممكن تطبع الي انت محتاجه بس زي كده
كود:
sed -n 's/storm/ahmed/p'storm>storm2

طيب لو كله الا السطرين دول
كود
كود:
sed -n 's/storm/ahmed/!p'storm>storm2
طيب نيجي للحذف انت في كلمه عايز تحذها سهله اعمل الاتي
كود:
sed 's/storm//g'storm>storm2
عقبالنا يارب unsure.gif
سعاتك مش مبسوط كده هو بيمسحلك اي حاجه في storm ومنتاش عايز كده انت عايزه يمسح الي بيبتدي ب storm نيجي بقي للبتوع دول $ ^ انا بسميها مؤشرات تحديد انت سميها زي ماتسميها
كود:
sed s/$storm/ahmed'storm>storm2
كود:
sed s /^storm/ahmed'storm>storm2
طيب لو السطر ال 5 او السادس بس ويكون بيبتدي ب storm
كود:
sed '5,6 s/^storm/ahmed/g'storm>storm2
كود
كود:
grep -r '$storm' * grep -r '^storm' *

بالمناسبه دمج ال ^$ يشكل سطر فاضي يعني لو انت جيت حذفت السطر الفاضي
كود
كود:
sed '/^$/ d' storm >storm2
طبعا s مش موجود لان s امر استبدال حتسبدل وتحذف ياخبر انا خلاص هييست
:thumpsup_green:
مثلا انت عايز تحذ السطر الي فيه اي كلمة اسمها storm >مخنوق منه tongue.gif
كود
كود:
sed '/storm/d' storm >storm2
كود
كود:
sed '/$storm/d'storm>storm2
كود:
sed '/^storm/'d'storm>storm2
شوف الاتي
كود
كود:
sed '/^storm/ c\ ahmed is realy sad and storm is realy crazy ' storm >storm2
اخر حاجه في الجزء ده ال append او الدمج
ال option هو a
كود:
sed '^a \ i am sllepy man ' storm >storm2
ايوه شاااطر
كود:
sed '$a \ i am sllepy man ' storm >storm2
كود:
sed '3a \ i am sllepy man ' storm >storm2
كود:
sed '3i \ i am sllepy man ' storm >storm2
عارف الامر head الي بيطبعلك اول 10 سطور من ملف معين
q الي حد ماشببهه لانك ممكن تخليه يعدل لحد حد معين من التعديلات زي كده
كود:
sed 's /1/2/5q'storm>storm2
السبب بقي الي خلاني اقول انه شبه head انه ممكن تعمل كده
كود
كود:
sed 100q storm
واظن بعد كمية اسم storm الي اتذكرت في الموضوع احب اوضح حاجه ده مش حب ذات بس لان الكلمه لها معني خاص في حياتي
اشوف وشكم في الجزء التاني لو فضلت عايش اساسا ههههه
اعتزر عن اللهجه المصريه وسوف اقوم بتعديله:gotcha:
c u all cheers
تعليق