از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
چگونه یک رشته را در یک فایل در Bash جایگزین کنیم
سرفصلهای مطلب
به عنوان یک برنامه نویس، ممکن است لازم باشد با انواع مختلفی از فایل ها کار کنید تا داده ها را به طور موقت یا دائم ذخیره کنید. گاهی اوقات، ممکن است لازم باشد بخشی از فایل را جایگزین کنید یا محتوای خاص فایل را تغییر دهید. برای جایگزینی محتوا در یک فایل، باید رشته فایل خاص را جستجو کنید. این ‘sed’ دستور برای جایگزینی هر رشته در یک فایل با استفاده از a استفاده می شود bash اسکریپت از این دستور می توان به روش های مختلفی برای جایگزینی محتوای یک فایل در آن استفاده کرد bash. این ابکیدستور ‘ همچنین می تواند برای جایگزینی رشته در یک فایل استفاده شود. این آموزش به شما نشان می دهد که چگونه هر مقدار رشته را با استفاده از a جایگزین کنید bash اسکریپت
02. رشته در فایل را با Bash Sed Script جایگزین کنید
03. دستورات sed g و i برای global و حروف غیر حساس
04. تطبیق رقم sed
06. رشته در فایل را با Bash Awk Script جایگزین کنید
07. رشته در فایل را با Pure Bash Scripting جایگزین کنید
08. رشته در فایل را با پرل وان لاینر جایگزین کنید
نمونه داده برای جایگزینی رشته Bash
یک فایل متنی به نام Sales.txt با محتوای زیر برای نمایش عملیات جایگزینی ایجاد شده است.
Sales.txt
01/01/2020 60000 داکا
2020/10/02 76000 رجشاهی
2020/03/21 54000 خلنا
15/04/2020 78000 چاندپور
17/05/2020 45000 بوگرا
2020/02/06 67000 Comilla
نحو عمومی برای Sed: جایگزین رشته در یک فایل
نحو اصلی «sedدستور برای جایگزینی رشته خاص در یک فایل در زیر آمده است.
نحو
هر قسمت از نحو فوق در زیر توضیح داده شده است.
‘-من’ اگر رشته جستجو در فایل وجود داشته باشد، از گزینه برای تغییر محتوای فایل اصلی با رشته جایگزین استفاده می شود.
‘s’ دستور جایگزین را نشان می دهد.
“رشته_جستجو” حاوی مقدار رشته ای است که برای جایگزینی در فایل جستجو می شود.
‘replace_string’ حاوی مقدار رشته ای است که برای جایگزینی محتوای فایلی که با آن مطابقت دارد استفاده می شود “رشته_جستجو” ارزش.
‘نام فایل’ حاوی نام فایلی است که جستجو و جایگزینی در آن اعمال خواهد شد.
مثال 1: فایل را با دستور ‘sed’ جایگزین کنید
در اسکریپت زیر، متن جستجو و جایگزینی از کاربر گرفته می شود. اگر رشته جستجو در “Sales.txt” وجود داشته باشد، با رشته جایگزین جایگزین می شود. در اینجا، جستجوی حساس به حروف کوچک و بزرگ انجام خواهد شد.
# نام فایل را اختصاص دهید
نام فایل=“Sales.txt”
# رشته جستجو را بگیرید
خواندن -پ “رشته جستجو را وارد کنید:” جستجو کردن
# رشته جایگزین را بردارید
خواندن -پ “رشته جایگزین را وارد کنید:” جایگزین کردن
اگر [[ $search != “” && $replace != “” ]]; سپس
sed -من “s/$جستجو/$ جایگزین کنید/” $filename
فی
خروجی:
مثال 2: فایل را با دستور ‘sed’ با پرچم ‘g’ و ‘i’ جایگزین کنید
اسکریپت زیر مانند مثال قبلی کار می کند، اما رشته جستجو به صورت سراسری برای پرچم ‘g’ جستجو می شود، و جستجوی بدون حساس به حروف بزرگ برای پرچم ‘i’ انجام می شود.
# رشته جستجو را بگیرید
خواندن -پ “رشته جستجو را وارد کنید:” جستجو کردن
# رشته جایگزین را بردارید
خواندن -پ “رشته جایگزین را وارد کنید:” جایگزین کردن
اگر [[ $search != “” && $replace != “” ]]; سپس
sed -من “s/$جستجو/$ جایگزین کنید/gi” 1 دلار
فی
خروجی:
مثال 3: فایل را با دستور “sed” و الگوی رقمی مطابق جایگزین کنید
اسکریپت زیر تمام محتویات عددی یک فایل را جستجو می کند و با افزودن عبارت جایگزین محتوا می شود ‘$’ نماد در ابتدای اعداد
# بررسی کنید که مقدار آرگومان خط فرمان وجود دارد یا خیر
اگر [ $1 != “” ]; سپس
# تمام رشته های حاوی ارقام را جستجو کنید و $ را اضافه کنید
sed -من ‘s/\b[0-9]\{5\}\b/$&/g’ 1 دلار
فی
خروجی:
رشته را در یک فایل با دستور awk جایگزین کنید
‘بیخیال دستور روش دیگری برای جایگزینی رشته در یک فایل است، اما این دستور نمی تواند فایل اصلی را مستقیماً مانند ‘ به روز کند.sed’ فرمان
مثال 4: فایل را با دستور awk جایگزین کنید
اسکریپت زیر محتوای به روز شده را در قسمت ذخیره می کند temp.txt فایلی که با فایل اصلی تغییر نام خواهد داد.
# بررسی کنید که مقدار آرگومان خط فرمان وجود دارد یا خیر
اگر [ $1 != “” ]; سپس
# جستجو در همه رشته ها روی تاریخ
بیخیال ‘{sub(“02/06/2020″، “12/06/2020”)} {print}’ 1 دلار > temp.txt && mv temp.txt 1 دلار
فی
خروجی:
در مثال بالا دستور awk برای جستجوی رشته استفاده می شود “02/06/2020”، که آخرین تاریخ در فایل نمونه ما است. رشته منطبق با یک رشته جدید جایگزین می شود “12/06/2020”. رشته ای که به دست می آید چه جایگزین شود یا نه چاپ می شود روی هر خط.
مثال 5: رشته در فایل را با Pure Bash Scripting جایگزین کنید
در این مثال همین کار را با حلقه Bash while و a انجام خواهیم داد bash دستور تعویض رشته خروجی را به a می نویسیم tmp فایل اصلی را در انتهای اسکریپت جایگزین کنید. کد زیر را ببینید:
در حالی که خواندن خط انجام دادن
# همه نمونه ها را جایگزین کنید روی خط خولنا با داکا
echo ${line//Khulna/Dhaka}
انجام شده < Sales.txt > /tmp/Sales.o.txt
mv /tmp/Sales.o.txt Sales.txt
می توانی ببینی echo دستور جایگزینی در متغیر خط انجام می دهد، زیرا اسکریپت هر خط را در فایل متنی می خواند و همه نمونه های آن را جایگزین می کند. خولنا با رشته جدید داکا. حلقه while از فایل ورودی خوانده می شود Sales.txt و در فایل خروجی می نویسد /tmp/Sales.o.txt. در نهایت فایل خروجی موقت جایگزین فایل اصلی می شود mv فرمان
خروجی:
مثال 6: رشته در فایل را با پرل یک لاینر جایگزین کنید
این کار در واقع بسیار ساده است پرل. پرل یک زبان قدیمی و کمتر محبوب اما بسیار قدرتمند است. این را می توان با یک دستور خط در bash خط فرمان:
-pi.bak به پرل می گوید process فایل در جای خود و همچنین ایجاد یک backup فایل با پسوند bak. جایگزینی همه موارد خواهد بود داکا برای بوگرا به عنوان متن جدید در اینجا می توانید خروجی آسان این دستور را مشاهده کنید:
خروجی:
نتیجه
این مقاله روش استفاده را به شما نشان داد bash اسکریپت هایی برای جایگزینی رشته ها در یک فایل با جستجو و جایگزینی روی خط فرمان در bash. راه های زیادی برای انجام این کار وجود دارد از جمله با دستورات sed، awk، perl. می توانید از بومی استفاده کنید bash اسکریپت نویسی با حلقه ها و regex و راه های بیشتری وجود دارد که حتی در اینجا بحث نشده است. Bash و linux راه های زیادی برای انجام یک کار دارند.
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم
زمان انتشار: 1402-12-31 12:08:03