1

I have two large files A and B

I need to delete lines that appear in file B from file A and save the result

to file C

I have tried comm -23 file1 file2

but it needs sort to save the result

and i need it the file C without sorting

any suggestion

Edit

Sample of file B

الناقدين, ونصوص الأدباء والرحالة, ومواقف السياسيين؛ ليصوغ منها حملة شرسة على الاستعمار وأربابه. وربما رآها آخرون حملة ناقمة, عمياء, دل عليها كتابان تاليان هما كتاب "تغطية الإسلام" و"ثقافة الإمبريالية", لقد جار عليه خصومه, وذلك ردهم على لذعاته ولوذعيته. كتاب الاستشراق فيه تطبيق لنظريات ميشيل فوكوه, ولا يضره ذلك ففلسفة فوكوه وجدت تطبيقا ميدانيا لها, في مسائل المعرفة وعلاقتها بالسلطة, وإعجاب إدوارد بفوكوه كبير, حتى إنه اهتم بحضور محاضراته, وربما حضر درسه الافتتاحي. وكان كتاب إدوارد سعيد قوة لكتابات فوكوه, وتطبيقا للنظرية تجاوز بالتطبيق والتفريع فكرة "صاحب نظرية المعرفة سلطة" أو"المعرفة تستتبع السلطة" وأسلوبه العالي نفخ الحياة في جفاف التنظير. 
وقد غزاه السرطان وأرهقه, وفي مقدمة هيكل لكتاب إدوارد عن أوسلو ومحادثات السلام, سلاّه هيكل عن السرطان بأن الأمراض تختار أجسادها. كان شجاعا, تميز عن مثقفي الشرق بكشف زيف الغرب واستغلاله للمعرفة, وسيلة للاستعمار, وكان شجاعا بتجاوز عقدة خنوع المثقف وحرصه وتبعيته وتهافته, وخالف نهج مثقفي العرب في المهجر الذين يلوذون بالصمت خوفا من نفوذ اليهود, وحرصا على مواقعهم الوظيفية, انضم لمنظمة التحرير بقناعة. 
قامت الدنيا عليه في جامعة يتنفذ فيها يهود نيويورك, ولم يبال بعرائضهم المطالبة بطرده, يقول: لم أملك إلا أ

Sample of file A

لناقدين, ونصوص الأدباء والرحالة, ومواقف السياسيين؛ ليصوغ منها حملة شرسة على الاستعمار وأربابه. وربما رآها آخرون حملة ناقمة, عمياء, دل عليها كتابان تاليان هما كتاب "تغطية الإسلام" و"ثقافة الإمبريالية", لقد جار عليه خصومه, وذلك ردهم على لذعاته ولوذعيته. كتاب الاستشراق فيه تطبيق لنظريات ميشيل فوكوه, ولا يضره ذلك ففلسفة فوكوه وجدت تطبيقا ميدانيا لها, في مسائل المعرفة وعلاقتها بالسلطة, وإعجاب إدوارد بفوكوه كبير, حتى إنه اهتم بحضور محاضراته, وربما حضر درسه الافتتاحي. وكان كتاب إدوارد سعيد قوة لكتابات فوكوه, وتطبيقا للنظرية تجاوز بالتطبيق والتفريع فكرة "صاحب نظرية المعرفة سلطة" أو"المعرفة تستتبع السلطة" وأسلوبه العالي نفخ الحياة في جفاف التنظير. 
وقد غزاه السرطان وأرهقه, وفي مقدمة هيكل لكتاب إدوارد عن أوسلو ومحادثات السلام, سلاّه هيكل عن السرطان بأن الأمراض تختار أجسادها. كان شجاعا, تميز عن مثقفي الشرق بكشف زيف الغرب واستغلاله للمعرفة, وسيلة للاستعمار, وكان شجاعا بتجاوز عقدة خنوع المثقف وحرصه وتبعيته وتهافته, وخالف نهج مثقفي العرب في المهجر الذين يلوذون بالصمت خوفا من نفوذ اليهود, وحرصا على مواقعهم الوظيفية, انضم لمنظمة التحرير بقناعة. 
قامت الدنيا عليه في جامعة يتنفذ فيها يهود نيويورك, ولم يبال بعرائضهم المطالبة بطرده, يقول: لم أملك إلا أن أقف على الحدود اللبنانية وأرمي المحتلين بحجر, والتقطت الصورة له وهو يرجمهم. 
وبدأت حملة جديدة طالب فيها أساتذة جامعته بطرده. ومن قبل ذلك لاحقه خصومه اليهود ينكرون كونه فلسطينيا مولودا في القدس, وذهب وفد يستقصي تاريخه, ونشرت مجلة "كومنتري" الأدبية اليهودية ملفا بذلك, فزادت هذه المطاردة من ذيوع قضيته. وخالف عرفات وصلحه بشجاعة, وخالف آراء كثير من مثقفي العرب في الموقف من مذابح هتلر لليهود, فهو يصدق حدوثها, ويستنكر قول المنكرين, ويتعاطف مع ضحاياها, وله في المسألة الفلسطينية رأي جريء حيث يطالب بدولة ديموقراطية واحدة في فلسطين للجميع, تحكمها الأغلبية وترعى حق الأقلية, ويخالف من يقول بدولتين. 
موقفه من قضايا المسلمين موقف منصف غالبا, وتغيظ مواقفه التيار الوصولي في الثقافة العربية المعاصرة؛ لأنه كان شديد القسوة على من يسميه بالمثقف الخائن, ويكثر من تكرار استخدام أحد الكتب الفرنسية المثيرة التي كتبت مطولا عن خيانة المثقفين وتبعيتهم. وهنا نلاحظ ذلك الجانب المكروه للوصوليين, وسوطه المرفوع الذي يجلد به ظهورهم, لم يكن يملك ما يخاف عليه, ولم يزده مرضه إلا تخففا وشجاعة, وقد سأله أحد المعلقين عن سر مضاعفة جهده, فأكد خطر معاناته لسرطان الدم, والمصاب بالسرطا ن لا وقت لديه, كان إذا حل على برنامج "تشارلي روز" تهاتفنا بالخبر؛ لأننا سنقضي ساعة من المتعة والفكرة, وبراعة المواجهة, فشجعان العقول قليل.. وهو من القلة التي تستطيع أن تكشف حدود الحرية الفكرية في أمريكا, وما أصعب أن ترى حدود الحرية. 
خسر المسلمون والعرب مدافعا فصيحا عن قضاياهم, ومهتما بارزا بقضية فلسطين. لقد كان رجلا واحدا، ولكنه كان جهازا إعلاميا ثقافيا مؤثرا, أكثر مما أثرت الدول العربية في التوعية بالمسألة الفلسطينية في الغرب, وكان مطلعا ومتابعا للأحداث ومعلقا فطنا, ومتحدثا آسرا, يفوق أسلوب حديثه أسلوب كتابته. كتبه القديمة والحديثة دائما معروضة في طبعات جديدة, لا ينتهي حولها الجدل, كان صيادا وعارضا للفكرة، مجيدا ومبدعا في اعتراضه ومؤثرا. عمقه في أدب الإنجليزية لا يبارى, وأجاد الفرنسية, ثم عاد لبيروت وتمكن من العربية. 
ولكم وددت أن يجد القارئ العربي كتاب "الاستشراق" بترجمة عربية جيدة, فإن مترجمه أعجمه, وأضر كمال أبو ديب بكتاباته, ولو قارنت هذه الترجمات مع ترجمات كتب أخرى مثل كتاب "صور المثقف" أو كتاب المقابلة الطويلة معه التي أجراها بارسيمان؛ لرأيت فرق الطريقتين. لقد كان لسان العرب الحر, محاضرا ومحاورا, أما بعد حسم معركته مع لويس فقد قل من فكّر في مواجهته. 
ودّع الناس مفكرا ومناضلا ثقافيا لا بديل له, ولا مقارب, وبقيت آثاره مدرسة في النزاهة ومكافحة الظلم, كان يعتقد الشكّ ـ كما وصف نفسه-.. ولو كان مسلما لترحمنا عليه..! 
user2999200
  • 151
  • 1
  • 9

2 Answers2

4

You can use the following:

grep -vxFf fileB fileA > fileC

Sample:

$ seq 5 > a   # 1 to 5  in file a
$ seq 10 > b  # 1 to 10 in file b
$ grep -vxFf a b > c
$ cat c
6
7
8
9

From man grep

-F, --fixed-strings

Interpret PATTERN as a list of fixed strings, separated by newlines, any of which is to be matched. (-F is specified by POSIX.)

-f FILE, --file=FILE

Obtain patterns from FILE, one per line. The empty file contains zero patterns, and therefore matches nothing. (-f is specified by POSIX.)

-v, --invert-match

Invert the sense of matching, to select non-matching lines. (-v is specified by POSIX.)

-x, --line-regexp

Select only those matches that exactly match the whole line. (-x is specified by POSIX.)

fedorqui
  • 275,237
  • 103
  • 548
  • 598
  • @anubhava it not work and show this message 'grep: F: No such file or directory' – user2999200 Feb 05 '14 at 14:39
  • @user2999200 can you show the exact command you used? Also, can you give a try without `-F` --> `grep -vf fileB fileA > fileC` – fedorqui Feb 05 '14 at 14:39
  • Try: `fgrep -vf fileB fileA` – anubhava Feb 05 '14 at 14:44
  • +1. May also want `-x` if the matches are whole-line matching is wanted. – glenn jackman Feb 05 '14 at 15:22
  • @user2999200 have you tried the version anubhava suggested? – fedorqui Feb 05 '14 at 16:38
  • @fedorqui Yes but there is no output! – user2999200 Feb 06 '14 at 00:15
  • @user2999200 mmmm should there be output? :) Edit your question and show some sample input, so we can help. – fedorqui Feb 06 '14 at 08:58
  • Ooooh now I see, @user2999200 . `grep` needs the `-f` to be in the last place. So `grep -vxFf fileB fileA` should make it. My fault. – fedorqui Feb 06 '14 at 16:26
  • @fedorqui it takes more that two hours processing up to now! is there something wrong? – user2999200 Feb 07 '14 at 12:29
  • @user2999200 It should be immediate. Try to perform the test I show in my answer. – fedorqui Feb 07 '14 at 12:30
  • @fedorqui it worked immediate for the example . but why it takes long time for my files? – user2999200 Feb 07 '14 at 12:44
  • @fedorqui '$ grep -vxFf cca.txt bookcollection1.txt>res.txt' – user2999200 Feb 07 '14 at 13:04
  • @user2999200 mind the spaces around `>`! Use `grep -vxFf cca.txt bookcollection1.txt > res.txt' – fedorqui Feb 07 '14 at 13:09
  • @fedorqui no changes! still processing – user2999200 Feb 07 '14 at 13:21
  • @user2999200 what if you do `grep -vxFf cca.txt bookcollection1.txt`? Does it show the result in your screen? Try also deleting `x` and `F`, they may not work: `grep -vf cca.txt bookcollection1.txt` – fedorqui Feb 07 '14 at 13:29
  • @fedorqui ' grep -vxFf cca.txt bookcollection1.txt' shows some lines on screen then it stoped! and ' grep -vf cca.txt bookcollection1.txt' shows grep: Unmatched [ or [^ – user2999200 Feb 07 '14 at 16:33
  • @user2999200 and are the lines that `grep -vxFf cca.txt bookcollection1.txt` is showing the ones you need? In that case, do `grep -vxFf cca.txt bookcollection1.txt > output_file.txt` to store it into a file. – fedorqui Feb 07 '14 at 16:35
  • @fedorqui grep -vxFf cca.txt bookcollection1.txt shows some result then stoped not completing until i abort! – user2999200 Feb 07 '14 at 16:39
  • @user2999200 I don't know what can be happening. You can maybe post your files so I can check. Also, are the files UNIX type? You can try doing `dos2unix file` to "clear" them from strange characters that can be bothering. – fedorqui Feb 07 '14 at 16:41
  • @fedorqui i will upload it to mediafire then i will give you the links so you can download – user2999200 Feb 07 '14 at 16:43
  • @user2999200 now I see it is a 13MB file. It is then normal that it takes some time. Try to split it in pieces to do the job, I cannot go further with this... – fedorqui Feb 07 '14 at 23:11
  • @fedorqui after almost 1 day of generating the output it doesn't delete the mating lines from arabicbook1 ! – user2999200 Feb 08 '14 at 11:53
  • @user2999200 I see the bookcollection file is 5 million lines. I suggest you to split it in different pieces and do the `grep` in each one of them. However, I ran it and just took about 30 secs to finish, with no matches. – fedorqui Feb 08 '14 at 12:05
  • @fedorqui it works now. i have ran $ fold -s for both files then i ran you command without split and it worked in few minutes . thanks – user2999200 Feb 08 '14 at 12:23
  • That's good news, @user2999200 ! I guess `fold -s` that gave a better output from which `grep` could work. Also, remember you can mark the answer as accepted if your problem is already solved. – fedorqui Feb 08 '14 at 12:44
1

As you mentioned, since comm needs sorted file to fetch the diff you can do in-line sorting before using comm like this :

comm -23 <(sort file1) <(sort file2) > fileC