از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
روش جایگزینی آخرین رخداد با استفاده از `sed`
سرفصلهای مطلب
دستور “sed” در لینوکس برای انواع مختلف عملیات متنی مانند درج، حذف، جایگزینی و غیره استفاده می شود. انواع مختلف وظایف جایگزینی را می توان با استفاده از دستور “sed” به راحتی انجام داد. هر کار جایگزینی را می توان بر اساس انجام داد روی متن یا الگوی جستجو متن یا الگوی جستجو ممکن است چندین بار در رشته یا فایلی که جستجو در آن انجام می شود، رخ دهد. چگونه می توانید آخرین تکرار متن یا الگوی جستجو را جایگزین کنید در این آموزش نشان داده شده است.
جایگزین کردن آخرین رخداد متن در یک رشته:
این بخش نشان می دهد که چگونه می توان آخرین رخداد الگوی جستجو در یک رشته را با استفاده از دستور sed جایگزین کرد.
مثال-1: جایگزین آخرین رخداد یک کلمه مبتنی بر روی الگو
دستور sed زیر کلمه را جستجو می کند ‘PHP’ در رشته و کلمه جستجو شده را با کلمه جایگزین کنید ‘AngularJS’ اگر کلمه در رشته وجود داشته باشد.
sed ‘s/\(.*\)PHP/\1AngularJS/’
پس از اجرای دستور خروجی زیر ظاهر می شود. اینجا، کلمه ‘PHP’ دو بار در رشته وجود دارد و آخرین رخداد با کلمه جایگزین شده است AngularJS‘.
مثال-2: آخرین رخداد الگوی رقمی را جایگزین کنید
دستور sed زیر هر رقمی را در رشته جستجو می کند و رقم آخر را با عدد جایگزین می کند 9.
sed ‘s/\(.*\)[0-9])*/\19/’
پس از اجرای دستور خروجی زیر ظاهر می شود. در اینجا، رقم دو بار در رشته ظاهر می شود و رقم آخر، 4، با شماره جایگزین شده است 9.
مثال-3: آخرین رقم یک عدد را جایگزین کنید روی الگو
دستور sed زیر آخرین رقم موجود در مقدار رشته را با مقدار دو برابر صفر (0 0) جایگزین می کند.
پس از اجرای دستور خروجی زیر ظاهر می شود. اینجا، 500 در مقدار رشته وجود دارد. بنابراین، طبق دستور جایگزینی، آخرین صفر از 500 با دو صفر دو برابر شده است و مقدار جایگزین شده است 5000.
مثال-4: آخرین وقوع یک کلمه را با کلمه دیگری جایگزین کنید
دستور sed زیر کلمه را جستجو می کند “جون” در رشته و جایگزین کردن آخرین رخداد کلمه با مقدار، ‘ممکن است’.
sed ‘s/\(.*\)Jun/\1 May/’ | tr “” ‘\n’
پس از اجرای دستور خروجی زیر ظاهر می شود. اینجا، کلمه “جون” دو بار در رشته وجود دارد و آخرین رخداد با کلمه جایگزین شده است ‘ممکن است’.
جایگزین کردن آخرین تکرار یک متن در یک فایل:
یک فایل متنی با نام ایجاد کنید Sales.txt با محتوای زیر برای آزمایش دستور “sed” استفاده شده در این بخش از آموزش برای جایگزینی آخرین رخداد متنی روی الگو.
Sales.txt
ژانویه 2018 200000 دلار
مارس 2019 300000 دلار
آوریل 2019 150000 دلار
مارس 2020 350000 دلار
مه 2019 210000 دلار
ژانویه 2020 240000 دلار
مثال-5: آخرین وقوع یک کلمه را با کلمه دیگری جایگزین کنید
دستور sed زیر کلمه را جستجو می کند ‘ژانویه‘ را در فایل قرار دهید و آخرین تکرار این کلمه را با کلمه جایگزین کنید ‘جولای‘.
$ sed ‘$ s/ژانویه/ژوئیه/’ Sales.txt
پس از اجرای دستورات خروجی زیر ظاهر می شود. کلمه ‘ژانویه’ دو بار در فایل ظاهر می شود. آخرین اتفاقی که در 7 وجود داردهفتم خط فایل با کلمه جایگزین شده است ‘جولای‘ در خروجی
مثال-6: آخرین رخداد یک عدد را با عدد دیگری جایگزین کنید
“tac”. دستور برای معکوس کردن محتوای فایل استفاده می شود. “tac”. دستور با دستور sed در دستور زیر برای جایگزینی آخرین رخداد استفاده می شود 2019با کلمه، ‘2017’.
$ tac Sales.txt | sed «0،/2019/{s/2019/2017/}» | tac
پس از اجرای دستورات خروجی زیر ظاهر می شود. در اینجا، ارزش سال، 2019‘ سه بار در فایل ظاهر می شود. اولین، ‘tac’ دستور محتوای فایل را معکوس کرده و خروجی را به فایل ارسال کرده است “سد”. دستور جایگزین کردن اولین رخداد ‘2019’ که آخرین اتفاق در فایل بر اساس مقدار سال است، ‘2017’. پس از تعویض، خروجی به “tac”. دستور معکوس کردن مجدد خروجی به این ترتیب، آخرین وقوع “2019‘ با مقدار جایگزین شده است 2017‘.
مثال-7: همه چیز را از یک خط مبتنی بر جایگزین کنید روی آخرین وقوع یک کلمه
به شرح زیر “سد”. دستور خط را با یک متن جدا شده از زبانه (\t) جایگزین می کند که در آن خط با رشته شروع می شود “مار” برای آخرین بار در فایل
$ tac Sales.txt | sed ‘0,/^Mar.*/{s/^Mar.*/July\t\t2018\t$400000/}’ | tac
پس از اجرای دستورات خروجی زیر ظاهر می شود. دو خط در فایل با رشته شروع می شود، “مار”، و آخرین رخداد این رشته در قسمت ظاهر می شود 5هفتم خط اولین “tac”. از دستور برای معکوس کردن محتوای فایل استفاده شده است و خروجی را به ` ارسال می کندsed` فرمان `sed” دستور خط را با یک متن جایگزین کرده است “ژوئیه 2018 400000 دلار‘ جایی که رشته جستجو برای اولین بار پیدا شد. خروجی از sed` دستور به ارسال شده است “tac”. دوباره دستور دهید تا خروجی را که محتوای اصلی فایل است معکوس کنید.
نتیجه:
دستور `sed` می تواند برای جایگزینی هر بخشی از یک رشته یا یک خط از فایل به روش های مختلف با استفاده از الگوهای عبارت منظم استفاده شود. این آموزش راههایی برای جایگزینی آخرین تکرار متن جستجو شده در یک رشته یا یک فایل با استفاده از چندین دستور «sed» را نشان میدهد. روش استفاده از دستور ‘tac’ با دستور ‘sed’ برای جایگزینی آخرین مورد جستجوی متن نیز در این آموزش نشان داده شده است. اما تمام دستورات استفاده شده در اینجا خروجی را به طور موقت تولید می کنند. برای تغییر دائمی محتوای فایل باید از گزینه “-i” با دستور “sed” استفاده کنید روی الگو.
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم
زمان انتشار: 1402-12-31 07:14:03