Txt ফাইল থেকে শব্দগুলি কীভাবে মুছবেন, যেটি অন্য একটি টেক্সট ফাইলে রয়েছে?


8

ফাইলের a.txtপ্রায় 100k শব্দ রয়েছে, প্রতিটি শব্দ নতুন লাইনে থাকে

july.cpp
windows.exe
ttm.rar
document.zip

ফাইলে b.txt150k শব্দ রয়েছে, প্রতিটি শব্দ এক এক করে - কিছু শব্দ ফাইল থেকে a.txt, তবে কিছু শব্দ নতুন:

july.cpp    
NOVEMBER.txt    
windows.exe    
ttm.rar    
document.zip    
diary.txt

এই ফাইলগুলিকে আমি কীভাবে একীভূত করতে পারি, সমস্ত সদৃশ লাইনগুলি মুছে ফেলতে পারি এবং নতুন লাইনগুলি রাখতে a.txtপারি (যে রেখাগুলি বিদ্যমান থাকে তবে বিদ্যমান নেই b.txtএবং তদ্বিপরীত)?


অজগরটি ব্যবহার করে আপনি কি খুশি হবেন?
টিম

2
@ মিকোয়াজ বার্টনিকি ইউনিক্স.এসই সম্ভবত জিজ্ঞাসা করার চেয়ে আরও ভাল জায়গা হবে
গ্লুটানিমেট

1
ক্যাসিয়া, আমি আমার উত্তরে ভুল করেছি, এজন্যই আমি এটি মুছে ফেলেছি। আমি একটি নতুন কাজ করছি।

2
@ গ্লুটানীমেট এই প্রশ্নটি এখানে পুরোপুরি ঠিক আছে।
শেঠ

1
@ গ্লুটানীমেট আহ, আমি দুঃখিত, আমি এই মন্তব্যটি কোনওভাবে মিস করেছি।
শেঠ

উত্তর:


13

এই কাজ করার জন্য একটি কমান্ড: comm। যেমনটি বলা হয়েছে man comm, এটি সহজ সরল:

   comm -3 file1 file2
          Print lines in file1 not in file2, and vice versa.

নোট করুন যে commফাইলের সামগ্রীগুলি বাছাই করা প্রত্যাশা করে, সুতরাং আপনার কল commকরার আগে তাদের অবশ্যই বাছাই করতে হবে , ঠিক যেমন:

sort unsorted-file.txt > sorted-file.txt

সুতরাং সংক্ষেপে:

sort a.txt > as.txt

sort b.txt > bs.txt

comm -3 as.txt bs.txt > result.txt

উপরের কমান্ডগুলির পরে, আপনার result.txtফাইলটিতে প্রত্যাশিত লাইন থাকবে ।


আপনাকে ধন্যবাদ, এটি একটি কবজ মত কাজ করে। পুনশ্চ. to zdjęcie z tłuczkiem na twoim profilu jest fajne ;-)
কেট-ক্যাসিয়া

2

জার্মারের উত্তরের উপর ভিত্তি করে এখানে একটি অল্প অজগর 3 স্ক্রিপ্ট রয়েছে, যা এর ক্রমবর্ধমান b.txtক্রম বজায় রেখে এটি সম্পাদন করা উচিত ।

#!/usr/bin/python3

with open('a.txt', 'r') as afile:
    a = set(line.rstrip('\n') for line in afile)

with open('b.txt', 'r') as bfile:
    for line in bfile:
        line = line.rstrip('\n')
        if line not in a:
            print(line)
            # Uncomment the following if you also want to remove duplicates:
            # a.add(line)

1
#!/usr/bin/env python3

with open('a.txt', 'r') as f:
    a_txt = f.read()
a = a_txt.split('\n')
del(a_txt)

with open('b.txt', 'r') as f:
    while True:
        b = f.readline().strip('\n ')
        if not len(b):
            break
        if not b in a:
            print(b)

2
ম্যান, আপনি একটি তোপের সাথে মশার শুটিং করছেন!

:-) তুমি ঠিক বলছো. আমি 100
কে'র

1

কোর্টিলাস commকমান্ডটি একবার দেখুন -man comm

NAME
       comm - compare two sorted files line by line

SYNOPSIS
       comm [OPTION]... FILE1 FILE2

DESCRIPTION
       Compare sorted files FILE1 and FILE2 line by line.

       With  no  options,  produce  three-column  output.  Column one contains
       lines unique to FILE1, column two contains lines unique to  FILE2,  and
       column three contains lines common to both files.

       -1     suppress column 1 (lines unique to FILE1)

       -2     suppress column 2 (lines unique to FILE2)

       -3     suppress column 3 (lines that appear in both files)

উদাহরণস্বরূপ আপনি করতে পারেন

$ comm -13 <(sort a.txt) <(sort b.txt)
diary.txt
NOVEMBER.txt

(অনন্য লাইন b.txt)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.