مشکل در ایجاد یک کد شل اسکریپت
|
2010-09-29, 10:35 PM,
ارسال : #1
|
|||
|
|||
مشکل در ایجاد یک کد شل اسکریپت
با سلام و عرض ادب
دوستان مشکلی در مورد ایجاد یک کد خیلی ساده در محیط شل لینوکس دارم که ابتدا مشکل رو بیان میکنم و اگر دوستان محبت کنند کمک کنند با استفاده از دستور cut چهار فیلد از تمام فیلد های موجود در یک فایل را که دائما با آن سروکار خواهیم داشت جدا میکنیم و میخواهیم این چهار فیلد به همین ترتیب که جدا سازی شده اند در جایی ریخته شوند و یا بدون ذخیره در فایلی سریعا در ادامه یک دستور قرار گیرند و سپس آن دستور اجرا شود و خروجی را مشاهده کنیم ... به این صورت که مثلا : cat /var/log/file.log | cut -f2,3,5d" " یک خروجی دارد مانند زیر 192.168.10.2 80 192.168.20.3 1122 ، میخواهم 4 آرگومان را که به ترتیب در کنار هم قرار میگیرند را بعد از یک فایل اجرایی با نام forward.sh اضافه کنم و سپس آن فایل اجرا شود و به من خروجی دهد . مثلا به شکل زیر شود : forward.sh 192.168.10.2 80 192.168.20.3 1122 خیلی در اینترنت جستجو کردم ولی نمیدانستم دنبال چه چیزی بگردم و دیگر زمان زیادی ندارم و از دوستان محترم و عزیز خواهش میکنم اگر ممکن است به من کمک کنید تا بتوانم این کار را به سرانجام برسونم باتشکر فراوان |
|||
2010-09-30, 08:14 AM,
ارسال : #2
|
|||
|
|||
پاسخ: مشکل در ایجاد یک کد شل اسکریپت
سلام
بعداز جدا سازی چند تا راه دارید .... یکیش اینه که همرو به یک فایل هدایت کنید .... وبعدش بخونید کد : in1=awk {' print $1 '} your file تا با غم عشق تو مرا کار افتاد بیچاره دلم در غم بسیار افتاد |
|||
2010-09-30, 10:11 AM,
ارسال : #3
|
|||
|
|||
پاسخ: مشکل در ایجاد یک کد شل اسکریپت
همچنین میتوانید از دستور xargs استفاده کنید و تعداد پارامترها را توسط سوئیچ n مشخص کنید:
کد : echo 1 2 3 4 5 6 7 8 9 10 11 12 | xargs -n 4 echo اما اگر تعداد پارامترهای خروجی دستور شما همواره چهارتاست، پس نیازی به استفاده از سوئیچ n نیست، بطور مثال با توجه به دستوری که نوشتید: کد : cat /var/log/file.log | cut -f2,3,5d" " | xargs forward.sh وبنوشت رایانهدوست؛ جزء کوچکی از اجتماع کاربرهای گنو/لینوکس |
|||
2010-09-30, 01:39 PM,
ارسال : #4
|
|||
|
|||
پاسخ: مشکل در ایجاد یک کد شل اسکریپت
سلام ممنون از محبت هر دو دوستان ، با توجه به اینکه همواره در فایل file.log اطلاعاتی در حال ذخیره شدن است پس فقط یک خروجی ندارد و ممکن است هر 2 ثانیه و یا شاید 2 ساعتی یک بار چنین داده ایی وارد فایل شود تا cut و در آخر فراخوانی شود ، برای این مسئله راه حلی هست ؟
با این روال که من پیش رفته ام و مثلا با grep یک خط خاص را جدا کنم ، فقط میتوانم همان یک خط جدا شده را فراخوانی کنم و در صورتیکه مجددا لاگ اضافه شد ؟؟؟ بینهایت متشکرم از لطف و عنایت شما دوستان گرامی و مهربان |
|||
2010-09-30, 02:32 PM,
ارسال : #5
|
|||
|
|||
پاسخ: مشکل در ایجاد یک کد شل اسکریپت
به جای استفاده از دستور cat از دستور tail -f برای خواندن فایل استفاده کن .
Debian GNU/Linux System Administrator |
|||
2010-09-30, 03:02 PM,
ارسال : #6
|
|||
|
|||
پاسخ: مشکل در ایجاد یک کد شل اسکریپت
میخواستم پیشنهاد بدم که از فایلهای FIFO استفاده کنی، اما این روشی که mah454 اشاره کردند، روش بهتر و سادهتری است و باید خروجی ناشی از grep را در یک فایل append کنید (بجای < از << استفاده کنید) و سپس همان فایل را با دستوری که گفته شد بخوانید.
وبنوشت رایانهدوست؛ جزء کوچکی از اجتماع کاربرهای گنو/لینوکس |
|||
|