86

I like to use tac to reverse the output of cat. However, it's not available in the Mavericks terminal. I tried to find it on MacPorts and again it's not available. Can anyone please show me how to get tac? It's very helpful for reading log files.

polarise
  • 1,051

4 Answers4

102

On OS/X like on many systems (BSDs, Solaris, AIX, IRIX...), the functionality of GNU tac is available in tail with the -r option. So no need to install GNU tac:

tail -r the-file
90

Yes:

  • Install Homebrew
  • brew install coreutils
  • ln -s /usr/local/bin/gtac /usr/local/bin/tac apparently not needed with latest Homebrew, see comment by Ran Ever-Hadani below

or use MacPorts to install coreutils in a similar way.

grebneke
  • 4,671
1

One temporary solution could be:

alias tac='perl -e "print reverse(<>)"'
JJoao
  • 12,170
  • 1
  • 23
  • 45
  • 1
    This just caused me to learn that <> doesn't only read from STDIN, but optionally from @ARGV. https://stackoverflow.com/questions/29020883/less-than-and-greater-than-symbols-together I still don't know if reverse will load the whole file into memory before outputting the lines in reverse order. That would be terrible. – Bruno Bronosky Apr 09 '19 at 18:11
  • 1
    @BrunoBronosky, > ...STDIN, but optionally from @ ARGV : yes that is what <> is for. > ... will load the whole file into memory... : YES, IT WILL! (avoid doing this with gigabyte files) – JJoao Apr 10 '19 at 07:45
0

Install gnu coreutils already compiled with Rudix:

sudo rudix install coreutils

Or download and gui install Rudix coreutils