4 ms·
"When I was compiling the list of significant packages using attoparsec, I made a guess that the Unix rev would reverse the order of lines in a file. What it do
by ckw 12y ago
"When I was compiling the list of significant packages using attoparsec, I made a guess that the Unix rev would reverse the order of lines in a file. What it does instead seems much less useful: it reverses the bytes on each line."
tac (1) - concatenate and print files in reverse
- _delirium 12y agoUnfortunately, tac isn't cross-platform. On systems with GNU userland, you can indeed use 'tac', but that isn't available on BSDish systems (including FreeBSD and Mac OS X), where 'tail -r' is what you want instead. And likewise, 'tail -r' doesn't work on systems with a GNU userland, because the tail in GNU coreutils doesn't implement -r (according to the maintainers, because reversing the order of lines in a file is completely out of scope for what 'tail' is supposed to do). I don't believe anything in POSIX will do this cross-platform in a straightforward way, because neither 'tac' nor the '-r' option of tail are in POSIX. That leaves you with the options: platform-testing if/thens, or rolling your own in an awk/etc. one-liner.
- joeyh 12y agoghc -e 'interact $ unlines . map reverse . lines'
- vertex-four 12y agoOr, on any *nix worth talking about, by default... perl -e 'print reverse <>'
- dbaupp 12y agoIsn't that `rev`, not `tac`? (I think `tac` should be `unlines . reverse . lines`.)
- wyager 12y agoYou are correct. For those not familiar with Haskell, unlines . map reverse . lines is the same thing as (python) lambda data : [line[::-1] for line in data] whereas unlines . reverse. lines is the same as lambda data : [line for line in data][::-1]
- dbaupp 12y agoWell, you need '\n'.join(...) for the "unlines" bit.
- dfc 12y agoI can not say enough about util-linux/coreutils. If you are a linux user you really should take an hour or so to go through the man pages of any of the programs that you are not aware of. The only tool I have never been able to use is ptx. (ptx is permutated indexes: legacy doc index creation[1]) `rev` is an great tool for processing text files from the command line. It is especially useful when you need a quick and easy way to grab the last column of a delimited file when the lines do no have the same number of columns: $ cat somefile | rev | cut -f 1 -d DELIMITER | rev [1]: http://unix.stackexchange.com/questions/92730/usr-bin-ptx-can-you-provide-a-use-case-or-two http://unix.stackexchange.com/questions/92730/usr-bin-ptx-ca...