وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

روش جایگزینی آخرین رخداد با استفاده از `sed`

0 3
زمان لازم برای مطالعه: 4 دقیقه


دستور “sed” در لینوکس برای انواع مختلف عملیات متنی مانند درج، حذف، جایگزینی و غیره استفاده می شود. انواع مختلف وظایف جایگزینی را می توان با استفاده از دستور “sed” به راحتی انجام داد. هر کار جایگزینی را می توان بر اساس انجام داد روی متن یا الگوی جستجو متن یا الگوی جستجو ممکن است چندین بار در رشته یا فایلی که جستجو در آن انجام می شود، رخ دهد. چگونه می توانید آخرین تکرار متن یا الگوی جستجو را جایگزین کنید در این آموزش نشان داده شده است.

جایگزین کردن آخرین رخداد متن در یک رشته:

این بخش نشان می دهد که چگونه می توان آخرین رخداد الگوی جستجو در یک رشته را با استفاده از دستور sed جایگزین کرد.

مثال-1: جایگزین آخرین رخداد یک کلمه مبتنی بر روی الگو

دستور sed زیر کلمه را جستجو می کند ‘PHP’ در رشته و کلمه جستجو شده را با کلمه جایگزین کنید ‘AngularJS’ اگر کلمه در رشته وجود داشته باشد.

$ echo “Java PHP Bash Python JavaScript PERL PHP Laravel” |
sed ‘s/\(.*\)PHP/\1AngularJS/’

پس از اجرای دستور خروجی زیر ظاهر می شود. اینجا، کلمه ‘PHP’ دو بار در رشته وجود دارد و آخرین رخداد با کلمه جایگزین شده است AngularJS‘.

روش جایگزینی آخرین رخداد با استفاده از `sed`

مثال-2: آخرین رخداد الگوی رقمی را جایگزین کنید

دستور sed زیر هر رقمی را در رشته جستجو می کند و رقم آخر را با عدد جایگزین می کند 9.

$ echo “مقدار شمارنده اول 2. مقدار شمارنده دوم 4” |

sed ‘s/\(.*\)[0-9])*/\19/’

پس از اجرای دستور خروجی زیر ظاهر می شود. در اینجا، رقم دو بار در رشته ظاهر می شود و رقم آخر،با شماره جایگزین شده است 9.

پیشنهاد می‌کنیم بخوانید:  Bash if-else بیانیه

روش جایگزینی آخرین رخداد با استفاده از `sed`روش جایگزینی آخرین رخداد با استفاده از `sed`

مثال-3: آخرین رقم یک عدد را جایگزین کنید روی الگو

دستور sed زیر آخرین رقم موجود در مقدار رشته را با مقدار دو برابر صفر (0 0) جایگزین می کند.

$ echo “قیمت محصول 500 دلار است.” | sed ‘s/\(.*\)[0-9]/\100/’

پس از اجرای دستور خروجی زیر ظاهر می شود. اینجا، 500 در مقدار رشته وجود دارد. بنابراین، طبق دستور جایگزینی، آخرین صفر از 500 با دو صفر دو برابر شده است و مقدار جایگزین شده است 5000.

روش جایگزینی آخرین رخداد با استفاده از `sed`روش جایگزینی آخرین رخداد با استفاده از `sed`

مثال-4: آخرین وقوع یک کلمه را با کلمه دیگری جایگزین کنید

دستور sed زیر کلمه را جستجو می کند “جون” در رشته و جایگزین کردن آخرین رخداد کلمه با مقدار، ‘ممکن است’.

$ printf “%s\n ژان فوریه ژوئن آوریل ژوئن دسامبر | tr ‘\n’ “” |

sed ‘s/\(.*\)Jun/\1 May/’ | tr “” ‘\n’

پس از اجرای دستور خروجی زیر ظاهر می شود. اینجا، کلمه “جون” دو بار در رشته وجود دارد و آخرین رخداد با کلمه جایگزین شده است ‘ممکن است’.

روش جایگزینی آخرین رخداد با استفاده از `sed`روش جایگزینی آخرین رخداد با استفاده از `sed`

جایگزین کردن آخرین تکرار یک متن در یک فایل:

یک فایل متنی با نام ایجاد کنید Sales.txt با محتوای زیر برای آزمایش دستور “sed” استفاده شده در این بخش از آموزش برای جایگزینی آخرین رخداد متنی روی الگو.

Sales.txt

مبلغ ماه سال
ژانویه 2018 200000 دلار
مارس 2019 300000 دلار
آوریل 2019 150000 دلار
مارس 2020 350000 دلار
مه 2019 210000 دلار
ژانویه 2020 240000 دلار

مثال-5: آخرین وقوع یک کلمه را با کلمه دیگری جایگزین کنید

دستور sed زیر کلمه را جستجو می کند ‘ژانویه‘ را در فایل قرار دهید و آخرین تکرار این کلمه را با کلمه جایگزین کنید ‘جولای‘.

$ گربه Sales.txt
$ sed ‘$ s/ژانویه/ژوئیه/’ Sales.txt

پس از اجرای دستورات خروجی زیر ظاهر می شود. کلمه ‘ژانویه’ دو بار در فایل ظاهر می شود. آخرین اتفاقی که در 7 وجود داردهفتم خط فایل با کلمه جایگزین شده است ‘جولای‘ در خروجی

روش جایگزینی آخرین رخداد با استفاده از `sed`روش جایگزینی آخرین رخداد با استفاده از `sed`

مثال-6: آخرین رخداد یک عدد را با عدد دیگری جایگزین کنید

“tac”. دستور برای معکوس کردن محتوای فایل استفاده می شود. “tac”. دستور با دستور sed در دستور زیر برای جایگزینی آخرین رخداد استفاده می شود 2019با کلمه، ‘2017’.

$ گربه Sales.txt
$ tac Sales.txt | sed «0،/2019/{s/2019/2017/}» | tac

پس از اجرای دستورات خروجی زیر ظاهر می شود. در اینجا، ارزش سال، 2019‘ سه بار در فایل ظاهر می شود. اولین، ‘tac’ دستور محتوای فایل را معکوس کرده و خروجی را به فایل ارسال کرده است “سد”. دستور جایگزین کردن اولین رخداد ‘2019’ که آخرین اتفاق در فایل بر اساس مقدار سال است، ‘2017’. پس از تعویض، خروجی به “tac”. دستور معکوس کردن مجدد خروجی به این ترتیب، آخرین وقوع “2019‘ با مقدار جایگزین شده است 2017‘.

پیشنهاد می‌کنیم بخوانید:  معنی $ در اسکریپت Bash چیست؟

روش جایگزینی آخرین رخداد با استفاده از `sed`روش جایگزینی آخرین رخداد با استفاده از `sed`

مثال-7: همه چیز را از یک خط مبتنی بر جایگزین کنید روی آخرین وقوع یک کلمه

به شرح زیر “سد”. دستور خط را با یک متن جدا شده از زبانه (\t) جایگزین می کند که در آن خط با رشته شروع می شود “مار” برای آخرین بار در فایل

$ گربه Sales.txt
$ tac Sales.txt | sed ‘0,/^Mar.*/{s/^Mar.*/July\t\t2018\t$400000/}’ | tac

پس از اجرای دستورات خروجی زیر ظاهر می شود. دو خط در فایل با رشته شروع می شود، “مار”، و آخرین رخداد این رشته در قسمت ظاهر می شود 5هفتم خط اولین “tac”. از دستور برای معکوس کردن محتوای فایل استفاده شده است و خروجی را به ` ارسال می کندsed` فرمان `sed” دستور خط را با یک متن جایگزین کرده است “ژوئیه 2018 400000 دلار‘ جایی که رشته جستجو برای اولین بار پیدا شد. خروجی از sed` دستور به ارسال شده است “tac”. دوباره دستور دهید تا خروجی را که محتوای اصلی فایل است معکوس کنید.

روش جایگزینی آخرین رخداد با استفاده از `sed`روش جایگزینی آخرین رخداد با استفاده از `sed`

نتیجه:

دستور `sed` می تواند برای جایگزینی هر بخشی از یک رشته یا یک خط از فایل به روش های مختلف با استفاده از الگوهای عبارت منظم استفاده شود. این آموزش راه‌هایی برای جایگزینی آخرین تکرار متن جستجو شده در یک رشته یا یک فایل با استفاده از چندین دستور «sed» را نشان می‌دهد. روش استفاده از دستور ‘tac’ با دستور ‘sed’ برای جایگزینی آخرین مورد جستجوی متن نیز در این آموزش نشان داده شده است. اما تمام دستورات استفاده شده در اینجا خروجی را به طور موقت تولید می کنند. برای تغییر دائمی محتوای فایل باید از گزینه “-i” با دستور “sed” استفاده کنید روی الگو.

برای نگارش بخشهایی از این متن ممکن است از ترجمه ماشینی یا هوش مصنوعی GPT استفاده شده باشد
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم

زمان انتشار: 1402-12-31 07:14:03

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید