انجمن‌های فارسی اوبونتو

کمک و پشتیبانی => راهنماها، نکات و ترفندها => نویسنده: oostaa در 18 شهریور 1394، 01:43 ب‌ظ

عنوان: درخواست دستور حذف بعضی از خطوط خاص در یک فایل تکست .
ارسال شده توسط: oostaa در 18 شهریور 1394، 01:43 ب‌ظ
سلام دوستان .
من یک فایل دارم که چندمیلیون خط داده داره . میخواستم خطوطی که ستون دومشون برابر با یه عدد خاصه (مثلا ۱ ) را حذف کنم .دنبال دستورهایی مثل sed و awk هم رفتم . اما متاسفانه هنوز چیزی به دست نیاوردم .ممنون میشم که راهنماییم کنید. با تشکر.
input
12984 2 116.16
12985 1 119.68
12986 2 123.2
12987 1 126.72
12988 1 130.24
12989 2 133.76
12990 2 137.28
12991 1 140.8
.
.
.


output

12984 2 116.16
12986 2 123.2
12989 2 133.76
12990 2 137.28
.
.
.
عنوان: پاسخ : درخواست دستور حذف بعضی از خطوط خاص در یک فایل تکست .
ارسال شده توسط: احمد حمزه ئی در 18 شهریور 1394، 02:21 ب‌ظ
با پایتون3 راحت میشه، فایل ورودی رو test.txt فرض کردم.
بعد خروجی اسکریپت رو تو مکان مورد نظر ذخیره می کنید.
for line in open('test.txt'):
    if line.split()[1] != '1':
        print(line.rstrip())

حتی یه خطی هم میشه با پایتون3
[print(line.rstrip()) for line in open('test.txt') if line.split()[1] != '1']
عنوان: پاسخ : درخواست دستور حذف بعضی از خطوط خاص در یک فایل تکست .
ارسال شده توسط: { AliReaza } در 18 شهریور 1394، 02:36 ب‌ظ
با sed که خیلی راحت میشه این کارو انجام داد:

sed '/ 1 /d' ./input > output
عنوان: پاسخ : درخواست دستور حذف بعضی از خطوط خاص در یک فایل تکست .
ارسال شده توسط: oostaa در 18 شهریور 1394، 02:41 ب‌ظ
عالی بود . دمتون گرم .