Oqim muharriri (sed)
sed buyrug‘idan foydalanish
sed buyrug‘i — kirish oqimi (fayl yoki pipe orqali uzatilgan ma’lumotlar) ustida oddiy matn o‘zgartirishlarini bajarish uchun ishlatiladigan oqim muharriri (stream editor).
Bu fayllar yoki ma’lumotlar oqimiga tezkor tahrirlar kiritish uchun kuchli vosita.
Quyidagi barcha misollarda example_text.txt faylidan foydalaniladi:
Hello World
Line 1
Line 2
Asosiy foydalanish
Fayldagi shablonning birinchi uchragan joyini almashtirish uchun sed 's/old/new/' filename buyrug‘idan foydalaning:
Misol: matnni almashtirish
sed 's/World/Bash/' example_text.txt
Hello Bash
Line 1
Line 2
Parametrlar
sed buyrug‘ida uning ishlashini o‘zgartiruvchi parametrlar mavjud:
-i- Fayllarni alohida saqlash talab qilinmasdan bevosita tahrirlash-e- Skriptni bajariladigan buyruqlarga qo‘shish-n- Qatorlarni avtomatik chiqarmaslik-r- Kengaytirilgan regulyar ifodalardan foydalanish-f- Skriptni fayldan qo‘shish-l-lbuyrug‘i uchun qator uzunligini belgilash
Fayllarni joyida tahrirlash
-i parametri fayllarni alohida saqlash talab qilinmasdan bevosita tahrirlash imkonini beradi.
Bu parametrsiz sed natijani standart chiqishga chiqaradi va o‘zgarishlarni saqlash uchun uni faylga yo‘naltirishingiz kerak bo‘ladi.
Misol: fayllarni joyida tahrirlash
sed -i 's/World/Bash/g' example_text.txt
cat example_text.txt
Hello Bash
Line 1
Line 2
Avtomatik chiqarishni o‘chirish
-n parametri pattern space (ishchi bufer) tarkibining avtomatik chiqarilishini o‘chiradi.
Standart holatda sed kirishdagi har bir qatorni natijaga chiqaradi. -n parametridan foydalanib, qaysi qatorlar chiqarilishini boshqarishingiz mumkin — odatda bu p buyrug‘i yordamida amalga oshiriladi.
Misol: avtomatik chiqarishni o‘chirish
sed -n 's/World/Bash/p' example_text.txt
Hello Bash
Kengaytirilgan regulyar ifodalar
-r parametri kengaytirilgan regulyar ifodalardan foydalanish imkonini beradi. Ular asosiy regulyar ifodalarga qaraganda shablonlarni moslashtirishning kuchliroq imkoniyatlarini taqdim etadi.
Bu parametrsiz sed asosiy regulyar ifodalardan foydalanadi.
Misol: kengaytirilgan regulyar ifodalar
sed -r 's/(World|Line)/Hello/g' example_text.txt
Hello Hello
Hello 1
Hello 2
Fayldagi skript
-f parametri skriptni fayldan qo‘shish imkonini beradi. Bu murakkab yoki bir nechta sed buyrug‘ini bajarish uchun foydali.
Bu parametrsiz skriptni bevosita buyruqlar qatorida ko‘rsatishingiz kerak.
script.sed faylining tarkibi:
s/World/Bash/g
Misol: fayldagi skript
sed -f script.sed example_text.txt
Hello Bash
Line 1
Line 2
Qator uzunligini belgilash
-l parametri l buyrug‘i uchun qator uzunligini belgilaydi. Bu buyruq qatorlarni chop etilmaydigan belgilari bilan birga chiqaradi.
Bu parametr uzun qatorlar bilan ishlaganda natijani formatlash uchun foydali.
Misol: qator uzunligini belgilash
sed -l 10 'l' example_text.txt
Hello Wor\
ld$
Hello World
Line 1$
Line 1
Line 2$
Line 2
Bu parametr qator tugaganini bildirish uchun har bir qator oxiriga $ belgisini qo‘shadi.
Natijani faylga yo‘naltirish
sed kiritgan o‘zgarishlarni faylga saqlash uchun natijani yangi faylga yo‘naltirishingiz mumkin. Bu asl faylni qayta yozishni istamaganingizda foydali.
Misol: natijani yo‘naltirish
sed 's/World/Bash/' example_text.txt > new_example_text.txt
cat new_example_text.txt
Hello Bash
Line 1
Line 2
sed buyrug‘i yordamida matnni murakkab qayta ishlash
Sed matnni qayta ishlashga oid murakkab vazifalarni bajara oladi. Masalan, sed 's/^/Prefix: /' example_text.txt buyrug‘i har bir qator boshiga prefiks qo‘shadi.
Misol: matnni murakkab qayta ishlash
sed 's/^/Prefix: /' example_text.txt
Prefix: Hello World
Prefix: Line 1
Prefix: Line 2
Keng tarqalgan xatolar va ularni bartaraf etish
sed buyrug‘idan foydalanganda quyidagi kabi xatolarga duch kelishingiz mumkin:
- "sed: command garbled" - Buyruq sintaksisini tekshiring.
- "sed: can't read file" - Fayl yo‘li to‘g‘ri va unga kirish mumkinligiga ishonch hosil qiling.
Xatolarni aniqlash bo‘yicha maslahatlardan biri — oraliq natijalarni chiqarish va buyruq mantiqini tekshirish uchun echo buyrug‘idan foydalanish.
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
