كيفية أستخدام sed من أجل إنشاء تحرير معالجة الملفات في لينكس ؟

 كيفية أستخدام sed من أجل إنشاء تحرير معالجة الملفات في لينكس ؟




كيفية أستخدام sed من أجل إنشاء تحرير معالجة الملفات في لينكس ؟









ملخص ما سوف نتعلمه .


1- # sed ‘s/x/X/g’ file 


2- # sed ‘s/x/X/g’ file.1 > file.2


3- # sed 's/x/\&/g;s/^Ich/Du/g' file.1


4- # sed -n '/^xxxx/p'  P/to/D/D/F | sed -n 1,5p


5- # sed '/^#\|^$/d' file




سوف نستخدم sed و هو إختصار ل stream editor .

لماذا نستخدم sed ؟

يستخدم لإجراء تحويلات النص الأساسية 

 

 

lowercase y

 UPPERCASE Y

g for all instances

 

دعنا ننشئ ملف جديد و نضع فيه التالي :

 

There are many different versions of Linux, and unlike other commercial operating systems that are controlled, distributed and supported by only one company, the core of Linux is free to distribute and use. This creates a situation in which numerous companies, organizations and individuals have developed their own specific version of the Linux operating system. When these versions are made publicly available for use, they are known as distributions.

 

سوف يكون بناء الجملة الأساسي كالتالي :

 

# sed ‘s/x/X/flag’ file

 

:~$ touch linux-www

 

# sed ‘s/a/A/g’ linux-www > www-linux-www

 

 

~$ ls

linux-www  www-linux-www

:~$ cat www-linux-www

There Are mAny different versions of Linux, And unlike other commerciAl operAting systems thAt Are controlled, distributed And supported by only one compAny, the core of Linux is free to distribute And use. This creAtes A situAtion in which numerous compAnies, orgAnizAtions And individuAls hAve developed their own specific version of the Linux operAting system. When these versions Are mAde publicly AvAilAble for use, they Are known As distributions.

 

 يمكن الآن أيضا أستخدام الاننين معا cat + sed

~$ echo ' a b c ' > Ex

$ cat Ex | sed 's/a/A/'

 A b c

 

و يمكن تنفيذه مباشرة .

~$  sed 's/a/A/' Ex

 A b c

 

لاحظ في كلا الأمرين لم يحفظ التغييرات .

 

~$ cat Ex

 a b c

سوف نضيف حرف آخر .

~$ echo 'a' >> Ex

لاحظ أن الأوامر السابقة تجري التغيير فقط  على أول حرف  a لو أردنا جعل التغييرات تشمل جميع حروف a علينا إضافة الخيار g

$  sed 's/a/A/g' Ex

 A b c

A

  • هناك خياران لحفظ التغييرات هي التالي :

1- إعادة توجيه الملف الأول إلى ملف جديد .

sed ‘s/a/A/g’ > Ex > new.txt

2- إضافة خيار .

sed -i ‘s/a/A/g’ > Ex 

 

 

بعض المفاهيم .

1- نستخدم  backward slash من أجل استبدال حرف عادي بحرف خاص مثل a-y ب @

~$ nano linux-www

hello + hi

~$ sed 's/and/\@/g' linux-www>linux-www1

:~$ cat linux-www1

@ + @

2- الجمع بين أمرين أو أكثر من أوامر الاستبدال من خلال الفاصلة ;

- نستخدم ^ للاستبدال من بداية السطر .

~$ echo '

a b c d

a b c d

b a c d

c a b c

 ' > linux-www

 

مثال :

~$   sed 's/^b/first_of_the_line/g;s/^c/\=/g;s/a/A/g' linux-www >linux-www2

$ cat linux-www2

 

A b c d

A b c d

first_of_the_line A c d

= A b c

 

 

 

كيفية عرض الملفات من خلال أستخدام الأمر  sed ؟

  • يطبع كل شئ بدون خيارات , نضيف خيار N من أجل تحديد الإخراج المراد .

 

~$ sed ' ' linux-www

a b c d

a b c d

b a c d

c a b c

  • لاحظ يعيد الإخراج مرتين لو أضفت خيار N لكان الإخراج مختلف .

xxxx@linux:~$ sed 'p' linux-www

 

 

a b c d

a b c d

a b c d

a b c d

b a c d

b a c d

c a b c

c a b c

 

 

xxxx@linux:~$ cat linux-www

 

a b c d

a b c d

b a c d

c a b c

 

~$ sed -n 'p' linux-www

a b c d

a b c d

b a c d

c a b c

كيفية استهداف أجزاء محددة من النص ؟

 

1- يطبع السطر الأول على الشاشة .

$  sed -n '1p' linux-www

a b c d

 

أخبرت  sed عن رقم السطر أو أي سطر تريد .

 

و يمكن أيضا العرض من بداية جملة ما من خلال التالي 

 

 ماذا تفعل لو أردنا طباعة خمسة سطور ؟


$  sed -n '1,5p' linux-www

a b c d

a b c d

b a c d

c a b c

1- a b c d





هل يمكن تخطي طباعة أسطر ؟


نعم 

$ sed -n '1~2p' linux-www

a b c d

b a c d

1- a b c d

3- b a c d

5- a b c d

7- b a c d

$  sed -n '1~3p' linux-www

a b c d

c a b c

3- b a c d

6- a b c d

 

  • نريد طباعة السطر الذي يحتوي على سي من بدايته .

~$ sed -n '/^c/p' linux-www

 

كيفية استخدام sed  من أجل الحذف ؟ 

 

1- حذف جميع الاسطر من أمر العرض 1-2 من خلال التالي :

~$ cat linux-www2

a B c d

a B c d

B a c d

c a B c

1- a B c d

2- a B c d

3- B a c d

4- c a B c

5- a B c d

6- a B c d

7- B a c d

8- c a B c

 

xxxx@linux:~$  sed '1~2d' linux-www2

a B c d

c a B c

2- a B c d

4- c a B c

6- a B c d

8- c a B c

 

سوف يؤدي لحذفها من العرض فقط .

 

  • إذا أردنا حفظ تعديلاتنا ، فيمكننا إعادة توجيه الإخراج القياسي إلى ملف مثل:

 

$  sed '1~2d' linux-www2 > linux-www3

xxxx@linux:~$ sed '' linux-www3

a B c d

c a B c

2- a B c d

4- c a B c

6- a B c d

8- c a B c

 

 

 

 من الأوامر المفيد حين تقوم بإعداد  أحد الخدمات حذف سطر معين .

 

:~$ sed '3d' linux-www

1- a b c d

2- a b c d

4- c a b c

5- a b c d

6- a b c d

7- b a c d

8- c a b c

 

و يمكن أيضا حذف شئ ما من سطر ما .

 

 

 في حال أردت الكتابة فوق الملف الأصلي فقط استخدم الخيار -i

 

 

sed -i '1~2d' linux-www

 

من الجيد إنشاء نسخ احتياطية عن الملفات التي يتم تعديلها ,

 

sed -i.bak '1~2d' linux-www

 


إرسال تعليق

0 تعليقات