Linux Compare two files on different field and print field 1 of first file

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP











up vote
-1
down vote

favorite












I have two files like this.



file 1



1:apple
2:banana
3:pineapple
4:guava
5:orange


and file 2 like this



apple
guava
orange


i just want to compare file 2 with file 1 and print the 1st field for the lines missing in file 2. Required is something like below



3
4


i tried using diff




file1 <(cut -d: -f2 file2)




but got the output as below



1a2,3
> banana
> pineapple









share|improve this question



























    up vote
    -1
    down vote

    favorite












    I have two files like this.



    file 1



    1:apple
    2:banana
    3:pineapple
    4:guava
    5:orange


    and file 2 like this



    apple
    guava
    orange


    i just want to compare file 2 with file 1 and print the 1st field for the lines missing in file 2. Required is something like below



    3
    4


    i tried using diff




    file1 <(cut -d: -f2 file2)




    but got the output as below



    1a2,3
    > banana
    > pineapple









    share|improve this question

























      up vote
      -1
      down vote

      favorite









      up vote
      -1
      down vote

      favorite











      I have two files like this.



      file 1



      1:apple
      2:banana
      3:pineapple
      4:guava
      5:orange


      and file 2 like this



      apple
      guava
      orange


      i just want to compare file 2 with file 1 and print the 1st field for the lines missing in file 2. Required is something like below



      3
      4


      i tried using diff




      file1 <(cut -d: -f2 file2)




      but got the output as below



      1a2,3
      > banana
      > pineapple









      share|improve this question















      I have two files like this.



      file 1



      1:apple
      2:banana
      3:pineapple
      4:guava
      5:orange


      and file 2 like this



      apple
      guava
      orange


      i just want to compare file 2 with file 1 and print the 1st field for the lines missing in file 2. Required is something like below



      3
      4


      i tried using diff




      file1 <(cut -d: -f2 file2)




      but got the output as below



      1a2,3
      > banana
      > pineapple






      awk diff






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Dec 4 at 6:40









      Rui F Ribeiro

      38.5k1479128




      38.5k1479128










      asked Dec 4 at 2:42









      upkar

      1558




      1558




















          1 Answer
          1






          active

          oldest

          votes

















          up vote
          0
          down vote



          accepted










          How about an associative array lookup using Awk?



          awk -F: 'NR==FNR a[$1]; next !($2 in a) print $1' file2 file1
          2
          3





          share|improve this answer




















          • Thanks, it serves my purpose, awk is a line by line processing wont it take too much time for large size files.
            – upkar
            Dec 4 at 3:35










          • @upkar Define "large". Note that this solution reads one of the files into memory. If your files are several gigabytes in size, you may have issues.
            – Kusalananda
            Dec 4 at 7:39










          Your Answer








          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "106"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );













          draft saved

          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f485806%2flinux-compare-two-files-on-different-field-and-print-field-1-of-first-file%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes








          up vote
          0
          down vote



          accepted










          How about an associative array lookup using Awk?



          awk -F: 'NR==FNR a[$1]; next !($2 in a) print $1' file2 file1
          2
          3





          share|improve this answer




















          • Thanks, it serves my purpose, awk is a line by line processing wont it take too much time for large size files.
            – upkar
            Dec 4 at 3:35










          • @upkar Define "large". Note that this solution reads one of the files into memory. If your files are several gigabytes in size, you may have issues.
            – Kusalananda
            Dec 4 at 7:39














          up vote
          0
          down vote



          accepted










          How about an associative array lookup using Awk?



          awk -F: 'NR==FNR a[$1]; next !($2 in a) print $1' file2 file1
          2
          3





          share|improve this answer




















          • Thanks, it serves my purpose, awk is a line by line processing wont it take too much time for large size files.
            – upkar
            Dec 4 at 3:35










          • @upkar Define "large". Note that this solution reads one of the files into memory. If your files are several gigabytes in size, you may have issues.
            – Kusalananda
            Dec 4 at 7:39












          up vote
          0
          down vote



          accepted







          up vote
          0
          down vote



          accepted






          How about an associative array lookup using Awk?



          awk -F: 'NR==FNR a[$1]; next !($2 in a) print $1' file2 file1
          2
          3





          share|improve this answer












          How about an associative array lookup using Awk?



          awk -F: 'NR==FNR a[$1]; next !($2 in a) print $1' file2 file1
          2
          3






          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Dec 4 at 2:57









          steeldriver

          34k34983




          34k34983











          • Thanks, it serves my purpose, awk is a line by line processing wont it take too much time for large size files.
            – upkar
            Dec 4 at 3:35










          • @upkar Define "large". Note that this solution reads one of the files into memory. If your files are several gigabytes in size, you may have issues.
            – Kusalananda
            Dec 4 at 7:39
















          • Thanks, it serves my purpose, awk is a line by line processing wont it take too much time for large size files.
            – upkar
            Dec 4 at 3:35










          • @upkar Define "large". Note that this solution reads one of the files into memory. If your files are several gigabytes in size, you may have issues.
            – Kusalananda
            Dec 4 at 7:39















          Thanks, it serves my purpose, awk is a line by line processing wont it take too much time for large size files.
          – upkar
          Dec 4 at 3:35




          Thanks, it serves my purpose, awk is a line by line processing wont it take too much time for large size files.
          – upkar
          Dec 4 at 3:35












          @upkar Define "large". Note that this solution reads one of the files into memory. If your files are several gigabytes in size, you may have issues.
          – Kusalananda
          Dec 4 at 7:39




          @upkar Define "large". Note that this solution reads one of the files into memory. If your files are several gigabytes in size, you may have issues.
          – Kusalananda
          Dec 4 at 7:39

















          draft saved

          draft discarded
















































          Thanks for contributing an answer to Unix & Linux Stack Exchange!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          To learn more, see our tips on writing great answers.





          Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


          Please pay close attention to the following guidance:


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f485806%2flinux-compare-two-files-on-different-field-and-print-field-1-of-first-file%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown






          Popular posts from this blog

          How to check contact read email or not when send email to Individual?

          Bahrain

          Postfix configuration issue with fips on centos 7; mailgun relay