لطفا وارد شوید یا ثبت‌نام کنید تا به انجمن‌ها دسترسی کامل داشته باشید.



 
امتياز موضوع :
  • 0 رأي - معدل امتيازات : 0
  • 1
  • 2
  • 3
  • 4
  • 5
کمک برای ادیت یک فایل تکست
2008-09-06, 09:51 AM,
ارسال : #1
کمک برای ادیت یک فایل تکست
سلام دوستان
من یه فایل تکست دارم و می خوام محتویات این فایل رو یک خط در میون پاک کنم. به عبارت دیگه اگر برای سطر های این متن شماره در نظر بگیریم، می خوام سطرهای با شماره زوج پاک بشن. من از ویندوز که نا امید شدم! حالا اومدم دست به دامن لینوکس شدم! دوستان اگه راهی به نظرشون می رسه، لطف کنن بگن چطور و با چه ادیتوری این امکان هست؟
جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2008-09-06, 10:34 AM,
ارسال : #2
پاسخ: کمک برای ادیت یک فایل تکست
سلام.
همین دو سه هفته پیش یه اسکریت واسه یکی نوشتم که کار مشابه همین رو انجام میداد:
<!-- m --><a class="postlink" href="http://www.technotux.org/html/modules.php?op=modload&name=PNphpBB2&file=viewtopic&p=118050">http://www.technotux.org/html/modules.p ... c&p=118050</a><!-- m -->

الآن یه مقدار تغییرش دادم تا این کاری که شما میخواید رو انجام بده:
کد :
#!/bin/bash
#File: remove_even_lines
if [ "$1" = "" -o "$1" = "-h" -o "$1" = "--help" ] ; then
  echo "usage:  $0  <input_file>"
fi
InputFile="$1"
OutputFile="$InputFile-new"
touch "$OutputFile"
N=1
cat "$InputFile" | while read LINE ; do
  if [ "$[N%2]" = "1" ] ; then
    echo "$LINE" >> "$OutputFile"
    echo fcdec
  #else
    #echo >> "$OutputFile"
  fi
  N=$[N+1]
done
mv "$InputFile" "$InputFile-old"
mv "$InputFile-new" "$InputFile"
این کد رو توسط یکی از ادیتورهای لینوکس، توی یه فایل به نام remove_even_lines ذخیره کنید. بعد به اون فایل مجوز اجرا بدید، و بعد فایل رو توی ترمینال اجراش کنید و مسیر اون فایل ورودی رو به آرگومانش بدید. حواستون باشه که اشتباهش با sh اجراش نکنید(مثل اون یکی دوستمون). یا با bash اجراش کنید، مثلاً
کد :
bash  /home/magician/Desktop/remove_even_lines  inputfile.txt
یا اینکه خود فایل اسکریپت رو اجرا کنید:
کد :
/home/magician/Desktop/remove_even_lines  inputfile.txt
خودش از خط اول اسکریپت تشخیص میده که باید با bash تفسیر بشه.
می‌تونید اسکریپت رو توی usr/bin/ کپی کنید تا بعنوان دستور تعریف بشه و راحت‌تر بتونید استفاده کنید.
کد :
remove_even_lines  inputfile.txt
مشاهده تارنمای کاربر جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2008-09-06, 10:38 AM,
ارسال : #3
پاسخ: کمک برای ادیت یک فایل تکست
ادیتور لازم نیست.‌ sed در خدمت شماست‌!

از منوال اینفوی sed:
کد :
3.2 Selecting lines with `sed'
==============================

Addresses in a `sed' script can be in any of the following forms:
`NUMBER'
     Specifying a line number will match only that line in the input.
     (Note that `sed' counts lines continuously across all input files
     unless `-i' or `-s' options are specified.)

`FIRST~STEP'
     This GNU extension matches every STEPth line starting with line
     FIRST.  In particular, lines will be selected when there exists a
     non-negative N such that the current line-number equals FIRST + (N
     * STEP).  Thus, to select the odd-numbered lines, one would use
     `1~2'; to pick every third line starting with the second, `2~3'
     would be used; to pick every fifth line starting with the tenth,
     use `10~5'; and `50~0' is just an obscure way of saying `50'.

مثال:
کد :
[mroshan@cyrex test]$ cat ttt
111111 1 1 1
22 2222 2 2
33 3 333
44 44444444444
55555 5 55 5 55
66 6 6 6 666 66666
77 77777
[mroshan@cyrex test]$ sed 2~2d ttt
111111 1 1 1
33 3 333
55555 5 55 5 55
77 77777
[mroshan@cyrex test]$ sed -i 2~2d ttt

دستور آخر کارتو را میندازه !

جزپیاتشو خودت بخون!
جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2008-09-06, 10:45 AM,
ارسال : #4
پاسخ: کمک برای ادیت یک فایل تکست
جالبه.Smile استفاده از sed خیلی راحت‌تره. به شرطی که آدم طرز استفاده‌ش رو یاد بگیره. در ضمن به نظر من کدنویسی انعطافش بیشتره.
مشاهده تارنمای کاربر جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2008-09-06, 02:09 PM,
ارسال : #5
پاسخ: کمک برای ادیت یک فایل تکست
خیلی خیلی ممنون
جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ


رفتن به انجمن :


کاربران در حال مشاهده موضوع : 1 مهمان