ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی “ ورود به حساب” کلیک کنید.





اگر فرم ثبت نام برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمیشود، اینجا را کلیک کنید.





نمایش نتایج: از 1 به 1 از 1
  1. #1
    masome vahid
    مدیر ارشد
    تاریخ عضویت
    Jan 2013
    محل سکونت
    Tehran
    نوشته ها
    1,200
    296
    806
    میزان امتیاز
    6

    15 ترفند از دستور sed برای تسک های مدیریتی روزانه در Linux

    هر ادمین سیستمی روزانه با فایل های متنی زیادی سر و کار دارد دانستن نحوه نمایش بخش های خاص، نحوه جابه جایی کلمات و همچنین فیلتر کردن محتوا از این فایل ها، همه و همه مهارت هایی هستند که شما باید بدون نیاز به سرچ گوگل تمام آنها را بدانید. در این مقاله ما دستور sed را مرور خواهیم کرد که یک ادیتور شناخته شده میباشد و 15 ترفند برای استفاده به منظور دسترسی به هدف هایی که در بالا اشاره شد را با شما به اشتراک میگذاریم.



    1 - نمایش خطوطی از یک داکیومنت

    ابزاری مانند head و tail به ما امکان نمایش بالا و پایین یک فایل را میدهند اما اگر ما بخواهیم بخشی در وسط یک فایل را ببینیم باید از چه استفاده کنیم ؟ دستور زیر برای ما خط های 5 تا 10 از فایل myfile.txt برا میگرداند.
    کد PHP:
    # sed -n '5,10p' myfile.txt 
    توصیه میشود این مقاله خوانده شود : http://linux-zone.org/forums/thread1904.html


    2 - نمایش کل فایل به غیر از یک رنج داده شده

    از طرف دیگر این امکان وجود دارد که کل یک فایل را به غیر از یک تعداد خط نمایش دهید. برای اینکه تمامی خطوط فایل myfile.txt به غیر از خط های 20 تا 35 نمایش داده شوند دستور زیر را اجرا میکنیم :
    کد PHP:
    # sed '20,35d' myfile.txt 

    3 - نمایش خطوط غیر متوالی (پشت سر هم نیستند)

    ممکن است شما خطوط غیر متوالی را نیاز داشته باشید. با دستور زیر میتوانید خط های 5 تا 7 و 10 تا 13 را از فایل myfile.txt نمایش دهید.
    کد PHP:
    # sed -n -e '5,7p' -e '10,13p' myfile.txt 
    همانطور که میبینید آپشن -e به شما این امکان را میدهد تا یک بخش داده شده (در اینجا منظور نمایش خط ها میباشد) برای هر رنج را اجرا کنید.


    4 - جایگزین کردن کلمات یا کاراکتر ها (جایگزینی ساده)

    برای جایگزین کردن هر مورد از کلمه version با کلمه story در فایل myfile.txt دستور زیر را اجرا کنید :
    کد PHP:
    # sed 's/version/story/g' myfile.txt 
    بعلاوه ممکن است شما به منظور صرف نظر کردن از حروف بزرگ و کوچک به جای آپشن g در دستور بالا از gi استفاده کنید.
    کد PHP:
    # sed 's/version/story/gi' myfile.txt 
    برای جابه جا کردن چندین space خالی با تنها یک space ما از دستور ip route show و یک pipline به دستور sed همانند زیر استفاده میکنیم.
    کد PHP:
    # ip route show | sed 's/  */ /g' 
    خروجی دستور ip route show را با دستور بالا مقایسه کنید.

    3312


    5 - جایگزینی کلمات یا کاراکترها در یک رنج (مثلا از خط 30 تا 40)

    اگر شما بخواهید کلماتی را که تنها درون یک محدوده خاصی از خطوط هستند (به طور مثال از خط 30 تا 40) نمایش دهید از دستور زیر استفاده کنید.
    کد PHP:
    # sed '30,40 s/version/story/g' myfile.txt 
    البته شما میتوانید یک خط مجزا را از طریق عدد ان خط به جای مشخص کردن یک رنج استفاده کنید.


    6 - استفاده از regular expression ها (جا به جایی های پیشرفته) - یک

    بعضی اوقات درون فایل های config خطوط کامنت شده زیادی دارند. ممکن است که برای شما مفید باشد که تنها خطوط اصلی فایل کانفیگ بدون خطوط کامنت شده را بخواهید در یک نگاه ببینید.

    برای حذف خط های خالی یا خط هایی که با علامت شارپ "#" شروع میشوند از فایل کانفیگ apache دستور زیر را اجرا کنید.
    کد PHP:
    # sed '/^#\|^$\| *#/d' httpd.conf 
    علامت caret یا "^" مشخص کننده ابتدای یک خط است یعنی مثلا (^#) یعنی هر خطی که با # شروع شود. و علامت (^$) نمایش دهنده خطوطی هست که خالی هستند.

    در این اینجا فایل کانفیگ apache خط هایی با #’s دارد که در ابتدای خط ها نیستند بنابراین برای حذف آنها از *# استفاده میکنیم.

    توصیه میشود مقالات زیر مطالعه شود :
    http://linux-zone.org/forums/thread2889.html


    7 - استفاده از regular expression (جا به جایی پیشرفته) - دو

    برای جا به جا کردن یک کلمه که با حروف بزرگ یا کوچک شروع میشود با کلمه دیگر نیز میتوان از دستور sed استفاده کرد. برای مثال کلمه zip یا Zip را با rar در فایل myfile.txt جابه جا می کنیم.
    کد PHP:
    # sed 's/[Zz]ip/rar/g' myfile.txt 
    توصیه میشود این مقاله را هم مطالعه کنید :
    http://linux-zone.org/forums/thread2855.html
    http://linux-zone.org/forums/thread2855.html

    8 - نمایش خط هایی که در آنها یک patern خاص موجود است.

    استفاده دیگر از دستور sed برای نمایش خطوطی از یک فایل است که با یک regular expression داده شده match باشد. برای مثال ممکن است بخواهید فعالیت های login و logout کردن به سرور در 2 july را مشاهده کنید (لاگ موجود در فایل var/log/secure در سرور centos 7)

    در این مورد الگویی که برای سرچ کردن استفاده میکنیم jul 2 میباشد که در ابتدای هر خط موجود است.
    کد PHP:
    # sed -n '/^Jul  1/ p' /var/log/secure 
    3312


    9 - وارد کردن فاصله (space) در فایل ها

    با دستور sed همچنین میتوانیم خط های خالی و یا space در یک فایل ایجاد کنیم. برای وارد کردن یک خط خالی ما بین تمامی خطوط (یک خط در میان یک خط خالی بندازیم) از دستور زیر به همراه نام فایل استفاده میکنیم.
    کد PHP:
    # sed G myfile.txt 
    برای وارد کردن 2 خط در بین تمامی خطوط همانند زیر عمل میکنیم.
    کد PHP:
    # sed 'G;G' myfile.txt 
    اگر شما میخواهید که خط های خالی بیشتری را بین خطوط اضافه کنید، از یک G بزرگ که به واسطه یک simicolon جدا شده استفاده کنید. مثال زیر دستورات بالا را درباره فایلی به نام LICENCE به شما نمایش خواهد داد.

    3312

    اگر شما بخواهید یک فایل کانفیگ خیلی بزرگ را بررسی کنید این ترفند به شما بسیار کمک خواهد کرد. وارد کردن یک خط خالی مابین خطوط و pip کردن خروجی به دستور less به شما در خواندن بهتر خروجی کمک بسزایی خواهد کرد.


    10 - شبیه سازی دستور dos2unix با استفاده از ادیتور sed

    برنامه dos2unix فایل های plain text را از فرمت windows/mac به unix/unix تبدیل میکند. همچنین کاراکترهای new line مخفی را که توسط بعضی از ویرایشگرهای متنی و در آن پلتفرم خاص اضافه شده اند را حذف میکند. اگر روی سیستم تان نصب نبود شما میتوانید برای آن کاربرد و به جای نصب dos2unix از دستور sed استفاده کنید.

    در تصویر سمت چپ شما میتوانید کاراکتر های DOS newline را (^M) مشاهده کنید که در تصویر بعد حذف شده اند.
    کد PHP:
    # sed -i 's/\r//' myfile.txt 
    3312

    لطفا توجه کنید که آپشن -i موجب اعمال تغییرات به هنگام ویرایش میشود و چیزی در screen نمایش داده نمیشود. و تنها درون فایل ذخیره میشود.

    دقت کنید که شما میتوانید کاراکترهای dos newline را به هنگام ویرایش کردن یک فایل با ادیتور vi با استفاده از ctrl+V و ctrl+M وارد کنید.
    این مقاله هم توصیه میشود خوانده شود : http://linux-zone.org/forums/thread1798.html


    11 - ویرایش درجا و گرفتن backup از فایل اصلی

    در قسمت قبلی ما از دستور sed برای تغییرات در محتوای فایل استفاده کردیم وتغییری در فایل اصلی ذخیره نکردیم. گاهی اوقات ذخیره یک backup از فایل اصلی در همان لحظه ایده ی بسیار خوبی است.
    برای این هدف از آپشن -i و یک پسوند (درون
    single quotes) برای تغییر نام فایل اصلی استفاده میکنیم.

    در مثال زیر ما
    در فایل myfile.txt همه کلمات this یا This (بدون در نظر گرفتن حروف بزرگ یا کوچک) را با کلمه that جایگزین خواهیم کرد و همچنین فایل اصلی را با نام myfile.txt.orig ذخیره میکنیم.
    و در نهایت از دستور diff برای بررسی تفاوتهای بین دو فایل استفاده می کنیم.
    کد PHP:
    # sed -i'.orig' 's/this/that/gi' myfile.txt 
    3312


    12 - فرض کنید شما فایلی شامل نام های کامل (با فرمت نام ونام خانوادگی ) دارید.

    ممکن است شما برای بررسی بهتر فایل بخواهید که جای این فیلدها را با هم جابجا کنید. یعنی اول نام خانوادگی و بعد نام قرار گیرند.
    با دستور sed براحتی می توان این کار را انجام داد:
    کد PHP:
    # sed 's/^\(.*\),\(.*\)$/\2\, \1/g' names.txt 
    3312

    در تصویر بالا پرانتز اول نشان دهنده کاراکتر 1 و پرانتز دوم
    نشان دهنده کاراکتر 2 می باشد.
    همچنین در دستور بالا :
    1:
    نشان دهنده شروع هر خط تا علامت کاما (،) می باشد.
    2: نشان دهنده هر چیزی بعد از کاما تا پایان خط می باشد.

    خروجی مطلوب که در فرمت نمایش داده شده به این صورت است :
    SecondColumn (Last name) + comma + space + FirstColumn (First name)
    که شما میتوانید آنرا به دلخواه خود تغییر دهید.


    13- جایگزینی کلمات تنها در صورت یافتن یک الگوی خاص

    گاهی اوقات شما نمیخواهید که تمام موارد موجود از یک کلمه را با کلمه ای دیگر جایگزین کنید و میخواهید تنها زمانی جایگزین شود که در آن خط یک کلمه ی خاص دیگر هم باشد.
    برای مثال ممکن است بخواهید کلمه start را با stop تنها درخطی که کلمه ی service در آن است جایگزین کنید. در این سناریو ما فایل زیر را داریم:
    کد PHP:
    We need to start partying at work,
    but let’s remember to start all services first
    از آنجاییکه در خط اول کلمه ی service وجود ندارد کلمه start با stop جایگزین نمیشود و تنها در خط دوم جایگزینی انجام میشود:
    کد PHP:
    # sed '/services/ s/start/stop/g' msg.txt 
    3312


    14 - اجرای همزمان دو مورد جایگزینی یا بیشتر

    شما میتوانید چند مورد جایگزینی را تنها با یک خط کامند sed انجام دهید. در اینجا کلمات taht و line را با کلمات this و verse به ترتیب جایگزین میکنیم.

    برای این منظور از دستور زیر استفاده میکنیم:
    کد PHP:
    # sed -i 's/that/this/gi;s/line/verse/gi' myfile.txt 
    همانند تصویر زیر :

    3312


    15 - ترکیب دستور sed و دستورات دیگر

    البته که میتوانیم دستور sed را با دیگر دستورات ترکیب کنیم و کامندهای قدرتمندی ایجاد کنیم. برای مثال از مثال مورد 4 استفاده میکنیم و ip address را از خروجی دستور ip route جدا می کنیم.

    ما ابتدا با نمایش خطی که کلمه src در آن است شروع می کنیم. سپس چندین space را به یک space تبدیل میکنیم. درنهایت فیلد نهم (یک space را بعنوان جدا کننده ی (separator) فیلدها در نظر میگیریم) که مکان ip address هست را جدا میکنیم.
    کد PHP:
    # ip route show | sed -n '/src/p' | sed -e 's/  */ /g' | cut -d' ' -f9 
    تصویر زیر مراحل دستور بالا را نمایش میدهد:

    3312

    خلاصه :
    در این پست 15 ترفند از دستور sed را برای مدیریت بهتر تسکهای روزانه ی سیستم مورد بحث قرار دادیم. باعث خوشحالیست اگر شما نیز ترفندی در استفاده از این دستور میدانید با ما به اشتراک بگذارید.

    موفق باشید.
    voip trainer - Asterisk - Elastix - Agi Programming- NewRock

    Voip Expert :ASTERISK-ELASTIX-NewRock Certified-With Experience of Working With
    Sangoma-Digium-Openvox-Synway-Atcom-Quintum Tenor-Polycom-Yealink-Rtx-Snom
    Cisco Collaboration - CME-CUCM-CUPs-CUC-WEBEX
    LPI ( Fundamental - LPI1 and LPI2 ) - Monitoring: ZABBIX-VOIPMONITOR-NAGIOS - CCNA

    Linkedin Profile : http://www.linkedin.com/profile/view...15&trk=spm_pic

  2. 1
نمایش نتایج: از 1 به 1 از 1

موضوعات مشابه

  1. پاسخ: 0
    آخرين نوشته: 11-20-2016, 10:27 PM
  2. آموزش کامل دستورات ترمینال لینوکس (Linux) - مقدماتی تا پیشرفته
    توسط Habili در انجمن تازه واردین لینوکس >> Beginner Basics
    پاسخ: 28
    آخرين نوشته: 02-13-2015, 01:35 AM
  3. پاسخ: 0
    آخرين نوشته: 03-12-2014, 03:30 PM
  4. آموزش نصب g729 وg723 به روایتی دیگر مخصوص تازه کارها
    توسط BburzuM در انجمن بخش عمومی استریسک <<>> Asterisk
    پاسخ: 0
    آخرين نوشته: 08-18-2013, 05:14 PM

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •