از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
روش استفاده از فرمان لینوکس sed در سال 1402 با مثال های مفید و موارد استفاده
سرفصلهای مطلب
لینوکس sed دستور به شما امکان می دهد بدون باز کردن آن با استفاده از ویرایشگر متن، خطوط را در یک فایل پیدا، جایگزین، درج و حذف کنید. این دستور لینوکس که برای ورودی لولهای و فرمتهای مختلف فایل مناسب است، از عبارت منظم یا استفاده میکند regex، به شما امکان می دهد الگوهای پیچیده را جستجو و دستکاری کنید.
با استفاده از موارد مختلف، درک روش استفاده از sed می تواند به مدیران سیستم کمک کند تا سرورهای خصوصی مجازی خود (VPS) را به طور موثر مدیریت کنند.
این مقاله دستورات sed، دستورات و دستورات فرعی لینوکس را توضیح خواهد داد. همچنین نمونه های مختلف sed و موارد استفاده برای مدیریت VPS لینوکس را یاد خواهید گرفت.
sed Command Options
نحو کلی دستور sed به این صورت است:
sed options 'script' file_name
برای تغییر رفتار دستورات sed، موارد زیر را اضافه کنید command-line گزینه ها:
- -کمک – اطلاعات استفاده از فرمان را چاپ می کند.
- – اشکال زدایی – ترمینال را قادر می سازد تا اجرای برنامه و ورودی را حاشیه نویسی کند.
- -من – فایل اصلی را بازنویسی می کند.
- -n – چاپ خودکار را غیرفعال می کند مگر اینکه کاربر از آن استفاده کند پ فرمان
- -u – خروجی را به حداقل می رساند.
- -پوکس – افزونه های POSIX sed را برای ساده کردن نوشتن اسکریپت های قابل حمل غیرفعال می کند.
- -e – چندین دستور را برای اجرای متوالی مشخص می کند.
- -ب – فایل های ورودی را در حالت باینری باز می کند.
- -ل – طول خط بسته بندی مورد نظر را برای ل فرمان
را اسکریپت شامل دستور فرعی، الگوی جستجو، رشته جایگزین و پرچم است. این عناصر در آپاستروف ها کپسوله می شوند و با استفاده از یک جدا کننده، مانند یک اسلش، از هم جدا می شوند./بک اسلش (\، یا لوله (|).
بسته به اینکه ترتیب آنها ممکن است متفاوت باشد روی فرمان فرعی به عنوان مثال س یا جایگزین دستور جایگزین a می شود عبارت منظم الگوی با یک رشته دیگر در اینجا نحو است:
's/regex_pattern/new_pattern/flags'
برای تغییر جایگزینی الگو، از پرچم های زیر استفاده کنید:
- g – جایگزین جهانی را اعمال می کند، نه فقط اولین اتفاق.
- عدد – مشخص می کند که کدام شماره خطوط را تغییر دهید.
- پ – خط جدید را پس از جایگزینی موفق الگو چاپ می کند.
- من – مورد تعویض را حساس می کند.
نکته حرفه ای
را س فرمان فرعی از چندین پرچم پشتیبانی می کند. به عنوان مثال، را اضافه کنید gi پرچم برای فعال کردن یک جایگزین جهانی و حساس به حروف کوچک و بزرگ.
چگونه sed را نصب کنیم؟
بسته ویرایشگر جریان لینوکس در اکثر توزیعها از پیش نصب شده است. اگر سیستم شما این ابزار را ندارد، برای نصب آن مراحل زیر را دنبال کنید:
مهم! در این آموزش، VPS ما در حال اجرا است اوبونتو 20.04. اگر از توزیع یا نسخه دیگری استفاده می کنید، دستورات ممکن است متفاوت باشد.
- با استفاده از کلاینت SSH مانند PuTTY یا Terminal به VPS خود متصل شوید. هاستینگer کاربران می توانند از مرورگر terminal از طریق hPanel.
- اعتبار ورود ریشه خود را وارد کنید. در hPanel، آنها در منوی نمای کلی VPS قرار دارند برگه دسترسی SSH.
- با تایپ این دستور مخزن را به روز کنید:
sudo apt-get update
- را نصب کنید بسته sed با وارد کردن دستور زیر:
sudo apt-get install sed
- برای بررسی موفقیت آمیز بودن نصب، دستور زیر را اجرا کنید:
sed --version
نمونه های فرمان sed
در بخشهای بعدی، 10 مثال دستور ویرایشگر جریان را ارائه خواهیم کرد تا به شما در درک عملکرد آن کمک کند.
مهم! تمام دستورات زیر فایل اصلی را تغییر نمی دهند. برای اعمال مستقیم تغییرات، آن را اضافه کنید -من گزینه.
استفاده از sed برای جستجو و جایگزینی یک رشته
دستور sed معمولاً برای جایگزینی متن استفاده می شود. این ابزار الگوی مشخص شده را در یک فایل جستجو می کند و آن را با رشته مورد نظر تغییر می دهد.
برای انجام این کار، از س دستور با رشته ای که می خواهید جایگزین کنید و جایگزین آن شود. در اینجا نحو است:
sed 's/old_string/new_string/' samplefile.txt
متغیرها را با مقدار واقعی تغییر دهید. به عنوان مثال، این دستور جایگزین کلمه می شود “تصاویر” با “عکس” در منظره.txt فایل:
sed 's/images/photos/' scenery.txt
اگر رشته شما حاوی علامت اسلش است، از جداکننده دیگری مانند بک اسلش استفاده کنید (\) یا لوله (|).
استفاده از sed برای جایگزینی nامین وقوع یک الگو در یک خط
اگر یک الگو در یک خط چندین بار رخ داد، دستور زیر را وارد کنید تا یک الگوی خاص جایگزین شود:
sed 's/old_string/new_string/#' samplefile.txt
نماد هش (#) را با شماره دنباله الگو جایگزین کنید. به عنوان مثال، این دستور جایگزین اولین وقوع کلمه می شود “موسیقی” با “ترانه” در یک خط در داخل playlist.txt فایل:
sed 's/music/song/1' playlist.txt
استفاده از sed برای جایگزینی همه رخدادهای الگو در یک خط
به طور پیش فرض، دستور sed تنها اولین نمونه از رشته مشخص شده را جایگزین می کند و به خط ورودی بعدی می رود. برای جایگزینی همه الگوهای منطبق در یک خط، عبارت را اضافه کنید g پرچم. اسکریپت sed چگونه به نظر می رسد:
sed 's/old_string/new_string/g' samplefile.txt
به عنوان مثال، موارد زیر را برای جایگزینی تمام رخدادهایی که حاوی هستند اجرا کنید “عقاب” با “شاهین” در یک خط در داخل animals.txt:
sed 's/eagle/falcon/g' animals.txt
استفاده از sed برای جایگزینی یک رخداد از n ام به همه موارد در یک خط
به جای جایگزینی همه الگوها در یک خط، تعداد و g پرچم برای جایگزینی رخدادهایی که از یک مورد خاص شروع می شود. این هم اسکریپت sed:
sed 's/old_string/new_string/#g' samplefile.txt
برای مثال دستور زیر جایگزین کلمه می شود “ماهی ها” با “آکواریوس” از وقوع دوم تا آخرین مورد در astrology.txt فایل.
sed 's/pisces/aquarius/2g' astrology.txt
استفاده از sed برای پرانتز کردن اولین کاراکتر هر کلمه
برای چاپ اولین کاراکتر هر کلمه داخل پرانتز، از اسکریپت زیر استفاده کنید:
echo "desired_sentence" | sed -E 's/(\b\w)/(\1)/g'
برای مثال برای نمایش اولین کاراکتر از “نمونه ای از دستور sed” در پرانتز وارد کنید:
echo "An example of the sed command" | sed -E 's/(\b\w)/(\1)/g'
برای پرانتز کردن اولین کاراکتر هر کلمه از یک فایل، عبارت را حذف کنید اکو دستور دهید و در پایان سند ورودی را اضافه کنید.
استفاده از sed برای جایگزینی رشته روی یک شماره خط خاص
برای جایگزینی رشته روی یک خط n، شماره دنباله آن را قبل از آن اضافه کنید س مانند این نحو:
sed '#s/old_string/new_string/' samplefile.txt
برای مثال عبارت زیر را به جای کلمه وارد کنید “کیک” با “نان” در خط دوم از foods.txt:
sed '2s/cake/bread/' foods.txt
استفاده از sed برای کپی کردن خط جایگزین شده با پرچم /p
برای چاپ خطوطی که دستور sed شما به عنوان یک خروجی اضافی تغییر داده است، از پ یا چاپ پرچم. در اینجا نحو کلی آمده است:
sed 's/old_string/new_string/p' samplefile.txt
به عنوان مثال برای جایگزینی موارد زیر را اجرا کنید “تلفن ها” با “قرص” در gadgets.txt فایل و پرینت نتایج:
sed 's/phones/tablets/p' gadgets.txt
اگر خط حاوی الگوی جستجو نباشد و جایگزین نشود، ترمینال رشته اصلی را چاپ می کند.
استفاده از sed برای جایگزینی رشته طیفی از خطوط
دستور sed به شما این امکان را می دهد که فقط شماره خطوط مشخص شده در اسکریپت را با اضافه کردن محدوده تغییر دهید. در اینجا نحو است:
sed '#,# s/old_string/new_string/' samplefile.txt
برای مثال دستور زیر جایگزین می شود “آلمان” واقع در خط سوم، چهارم و پنجم روی را country.txt فایل با “فرانسه”:
sed '3,5 s/germany/france/' countries.txt
استفاده از sed برای چاپ فقط خطوط جایگزین شده
به طور پیش فرض، ویرایشگر جریان کل محتوای فایل را چاپ می کند. برای ساده کردن خروجی، ترکیب کنید -n گزینه با پ دستور برای نشان دادن تنها خطوط منطبق. در اینجا نحو کلی آمده است:
sed -n 's/old_string/new_string/p' samplefile.txt
به عنوان مثال، برای جایگزینی نمونه سوم از “سبز” با “آبی“ در یک خط در داخل colors.txt خطوط اصلاح شده را فایل و چاپ کنید روی را terminal پنجره، وارد کنید:
sed -n 's/green/blue/3p' colors.txt
استفاده از sed برای حذف خطوط از یک فایل خاص
را د یا حذف دستور به شما امکان می دهد خطوط را از یک فایل بدون ویرایشگر متن حذف کنید. به عنوان مثال، از دستور زیر برای حذف یک شماره خط خاص استفاده کنید:
sed '#d' samplefile.txt
نماد هش (#) را با شماره خطی که می خواهید حذف کنید جایگزین کنید. به عنوان مثال، این دستور را اجرا کنید تا اولین خط از صفحه حذف شود citys.txt فایل:
sed '1d' cities.txt
علاوه بر این، با استفاده از دستور sed می توانید تمام خطوط را در یک محدوده خاص حذف کنید:
sed '#,#d' samplefile.txt
نمادهای هش (#) را با شماره خط شروع و پایان جایگزین کنید. به عنوان مثال، برای حذف خط اول تا سوم در عبارت زیر را وارد کنید cars.txt فایل:
sed '1,3d' cars.txt
همچنین می توانید آخرین خط یک فایل را با ترکیب کردن حذف کنید د دستور فرعی و علامت دلار ($)، مانند زیر.
sed '$d' samplefile.txt
برای حذف یک شماره خط خاص که از آخرین شماره شروع می شود، از دستور زیر استفاده کنید:
sed '#,$d' samplefile.txt
به عنوان مثال، این دستور خط دوم تا آخرین خط را حذف می کند books.txt فایل:
sed '2,$d' books.txt
علاوه بر حذف خطوط، از این دستور برای حذف یک رخداد خاص در یک فایل استفاده کنید. برای انجام این کار، الگوی regex را در اسکریپت خود مانند نحو زیر مشخص کنید:
sed '/pattern/d' samplefile.txt
برای مثال، این را اجرا کنید تا حذف شود “اوابو” الگوی از filestrings.txt فایل:
sed '/oabo/d' filestrings.txt
موارد استفاده از فرمان sed
در این قسمت روش استفاده از دستورات sed برای موارد استفاده مختلف در مدیریت سرور را توضیح خواهیم داد.
استفاده از sed برای پردازش دسته ای فایل ها
به طور کلی، دو راه برای ویرایش فایل ها به صورت انبوه با استفاده از دستور sed وجود دارد.
ابتدا فایل ها را به صورت جداگانه مشخص کنید. با این روش، تمام فایلهای ورودی را که میخواهید جایگزین کنید، در انتهای دستور خود فهرست میکنید که با استفاده از فاصله از هم جدا شدهاند. در اینجا نحو است:
sed 's/old_string/new_string/g' filename1.txt filename2.txt
دستور به طور همزمان همه را پیدا و جایگزین می کند رشته_قدیمی موارد در دو فایل متنی
دوم، آنها را با استفاده از اسکن کنید پیدا کردن فرمان این روش به طور خودکار فایل های حاوی الگوی مشخص شده را در یک فهرست جستجو می کند. در اینجا نحو است:
find /directory/path/file -type f -exec sed -i 's/old_string/new_string/g' {} \;
جایگزین کردن /directory/path/file با دایرکتوری حاوی فایل هایی که می خواهید process.
هنگام استفاده از روش دوم، یک فایل پشتیبان برای بازیابی آسان در صورت تعویض تصادفی ایجاد کنید. متناوبا، حذف کنید -من گزینه ای برای غیرفعال کردن ویرایش در محل و بدون تغییر نگه داشتن فایل اصلی.
از sed to استفاده کنید تجزیه و تحلیل فایل لاگ
دستور sed در لینوکس علاوه بر اصلاح الگوها برای تجزیه و تحلیل لاگ نیز مفید است. این به شما امکان می دهد به راحتی یک الگوی خاص را در فایل گزارش جستجو کنید و نتایج را برای تشخیص آسان تر استخراج کنید.
برای انجام این کار، را اضافه کنید > نماد برای خروجی الگوهای تطبیق در یک متن فایل. در حالی که دستور بسته به آن متفاوت است روی در استفاده شما، نحو اصلی به صورت زیر باقی می ماند:
sed -n 's/pattern/p' logfile.log > extracted_data.txt
الگوی regex را با توجه به دادههایی که میخواهید جستجو کنید، مانند آدرس IP، پیام خطا یا مهر زمانی، تغییر دهید. به عنوان مثال، از این اسکریپت برای صادر کردن خطاهای ثبت شده استفاده کنید:
sed -n 's/Error: \(.*\)/\1/p' logfile.log > error_logs.txt
از sed برای دستکاری تگ HTML/XML استفاده کنید
دستور sed در لینوکس به شما امکان می دهد رشته ها را به راحتی در کد جایگزین کنید. برای مثال، میتوانید برچسبهای خاص HTML یا XML را جستجو کنید و با استفاده از آن، ویژگیهای آنها را جایگزین کنید جایگزینی فرمان در اینجا نحو است:
sed 's/<tag attribute="old_pattern">/<tag attribute="new_pattern"/' file.html
دستور بسته به آن متفاوت است روی برچسب ها و ویژگی هایی که می خواهید تغییر دهید. به عنوان مثال، این دستور sed همه تگ های عنوان را تغییر می دهد. رنگ صفات به سیاه:
sed 's/\(<h[1-6].*color:\) [^;]*/\1 black/g' webpage.html
دستور الگوی کد HTML زیر را جستجو می کند و مقدار رنگ را با رشته جدید جایگزین می کند:
<h1 style="color: value;">Heading 1</h1>
از sed برای فایل های خارجی استفاده کنید
عملیات پیچیده دستور sed ممکن است حاوی چندین اسکریپت باشد. در حالی که می توانید آنها را در یک دستور با استفاده از -e گزینه، نوشتن آن دشوار است و مستعد خطا است.
از طرف دیگر، یک خارجی ایجاد کنید SED فایل حاوی چندین اسکریپت این مرحله است:
- را اجرا کنید نانو دستور ایجاد یک فایل اسکریپت جدید و باز کردن ویرایشگر متن. جایگزین کردن اسکریپت با نام فایل مورد نظر شما:
nano script.sed
- اسکریپت های خود را بنویسید و مطمئن شوید که هر خط دارای یک اسکریپت بدون آپستروف است، مانند موارد زیر:
s/old_pattern1/new_pattern1/g
/old_pattern2/d
- مطبوعات Ctrl+X و Y برای بستن ویرایشگر و ذخیره فایل.
- اسکریپت ها را با اضافه کردن فایل با استفاده از -ف گزینه در دستور شما در اینجا نحو به نظر می رسد:
sed -f script.sed destination_file.txt
از sed برای BackReferences در Regex استفاده کنید
مراجع برگشتی به شما اجازه می دهد به الگوهای مطابق قبلی مراجعه کنید و از آنها در رشته جدید استفاده مجدد کنید. نیاز به بازنویسی الگوی regex را از بین می برد و اسکریپت را ساده می کند.
الگوی مورد استفاده به عنوان مرجع دستور sed a نامیده می شود گروه گرفتن. در داخل پرانتز محصور شده است، همچنین برای عبارات منظم گسترش یافته اسلید می شود.
برای مراجعه به گروه عکسبرداری، از علامت بک اسلش (\) و عددی که ترتیب الگو را نشان می دهد استفاده کنید. به عنوان مثال، \1 ارجاع به عقب از اولین الگوی regex گرفته شده مجددا استفاده می کند.
مراجع برگشتی برای جایگزینی و ترتیب مجدد الگوها مفید هستند. به عنوان مثال، این دستور sed از آنها برای مرتب کردن نام خانوادگی و کوچک استفاده می کند:
echo "Doe, John" | sed 's/\(.*\), \(.*\)/\2 \1/'
این دو \(.*\) الگوهای regex Doe و John را می گیرند و آنها را به عنوان مرجع قرار می دهند. از آنجایی که رشته جدید با مرجع دوم شروع می شود، مقدار جدید خواهد بود جان دو.
نتیجه
ویرایشگر جریان یا دستور sed در لینوکس ابزاری است که به شما امکان میدهد الگوی یک فایل را با استفاده از عبارات منظم پیدا و تغییر دهید. سینتکس آن شامل دستور sed، گزینه ها، اسکریپت و فایل هدف است.
sed command-line گزینه ها رفتار ابزار را تغییر می دهند، در حالی که اسکریپت تعیین می کند که چگونه ابزار الگوی regex منطبق را تغییر می دهد. این اسکریپت شامل یک فرمان فرعی، پرچم ها و الگوهای regex است که هر کدام با استفاده از یک جداکننده مانند یک اسلش (/) از هم جدا شده اند.
برای استفاده از دستور sed در لینوکس، باز کنید command-line برنامه هایی مانند ترمینال، کلاینت SSH یا هاستینگerترمینال مرورگر. برای پیدا کردن و جایگزین کردن یک الگو، از س فرمان فرعی در همین حال، د دستور فرعی خطوط یا رشته ها را حذف می کند.
دستور sed در لینوکس همچنین برای تجزیه و تحلیل گزارش، اصلاح تگ های نشانه گذاری و پردازش فایل ها به صورت انبوه مفید است. علاوه بر این، از ارجاعات پشتیبان regex پشتیبانی می کند و به شما امکان می دهد از یک فایل اسکریپت برای اجرای چندین دستور لینوکس به طور همزمان استفاده کنید.
سؤالات متداول در لینوکس sed Command
این بخش به سوالات متداول در مورد دستور sed پاسخ می دهد.
sed چه تفاوتی با grep دارد؟
هر دو sed و grep ابزارهای پردازش متن در لینوکس هستند. با این حال، grep از دستورات تبدیل متن یا دستکاری خط مانند جایگزینی پشتیبانی نمی کند. در درجه اول برای یافتن الگوهای متنی خاص در فایل های بزرگ و چاپ خروجی استفاده می شود.
sed چگونه در اسکریپت Bash استفاده می شود؟
در اسکریپت Bash، دستور sed سه کاربرد اصلی دارد: چاپ کردن در stdout، حذف یک متن، و جایگزینی یک رشته خاص. برنامه تعیین می کند که کدام خط را انتخاب کند process از محدوده آدرس مشخص شده
چگونه می توان یک متغیر را در دستور sed فراخوانی کرد؟
متغیر کاراکتری است که ما به آن مقداری اختصاص میدهیم و زمانی که به دستور sed اضافه میشود خوانایی بهتری ارائه میدهد. این می تواند یک عدد، کاراکتر، نام فایل یا دستگاه باشد. پوسته متغیرها را گسترش می دهد. برای مثال، اگر رشته حاوی یک اسلش باشد (/، از جداکننده دیگری مانند لوله (|).
تفاوت دستور sed با دستور awk چیست؟
دستور sed برای تغییرات اساسی متن است، مانند جایگزینی، حذف و درج یک الگو در یک فایل ورودی. در همین حال، awk برای کارهای پیچیده مانند استخراج داده ها، دستکاری متن و محاسبات ریاضی استفاده می شود. همچنین از دستورات برنامه نویسی مانند اگر دیگری و انجام در حالی که.
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم
زمان انتشار: 1402-12-29 10:51:08