Diff the output of two `awk` commands

6,657

diff expects the names of two files, so you should put the two output on two files, then compare them:

awk '{print $3}' f1.txt | sort -u > out1
awk '{print $2}' f2.txt | sort -u > out2
diff out1 out2

or, using ksh93, bash or zsh, you can use process substitution:

diff <(awk '{print $3}' f1.txt | sort -u) <(awk '{print $2}' f2.txt | sort -u)
Share:
6,657

Related videos on Youtube

Falanwe
Author by

Falanwe

Updated on September 18, 2022

Comments

  • Falanwe
    Falanwe almost 2 years

    I'm trying to compute the difference between the output of two awk commands but my simple attempts at it seem to be failing. Here is what I'm trying:

    diff $(awk '{print $3}' f1.txt | sort -u) $(awk '{print $2}' f2.txt | sort -u)
    

    This doesn't work for reasons unknown to me. I was under the assumption that $() construct was used to capture the output of another command but my "diff" invocation fails to recognize the two inputs given to it. Is there any way I can make this work.

    By the way, I can't use the obvious solution of writing the output of those two commands to separate files given that I'm logged on to a production box with no 'write' privileges.

    • Admin
      Admin over 12 years
      try writing output of both awk functions into different files and compare them using diff command
    • Admin
      Admin over 12 years
      Unfortunately that isn't acceptable since I'm logged on to a production box with no write access.
  • Falanwe
    Falanwe over 12 years
    Wow, the second solution works like a charm (unfortunately can't use first since I can't create a file on that box). BTW, can you throw some pointers/links on what kind of black magic this <() construct is and what is it called?
  • enzotib
    enzotib over 12 years
    @sasuke: See this other answer: unix.stackexchange.com/questions/22645/…
  • Johan
    Johan over 12 years
    @sasuke you don't need to put outX in the same dir, you could put them in ~/ or /tmp/. You should have some place on the machine you could create tmp files even on a "production box".
  • Kusalananda
    Kusalananda over 5 years
    @sasuke /tmp should still be writable though, or the system is truly borked.