Basically it's a Rust rewrite of Tomnomnom anew originally written in Go.
70% of the Readme is a tomnomnom work.
Append lines from stdin to a file, but only if they don't already appear in the file.
Outputs new lines to stdout too, making it a bit like a tee -a that removes duplicates.
Here, a file called things.txt contains a list of numbers. newthings.txt contains a second
list of numbers, some of which appear in things.txt and some of which do not. anew is used
to append the latter to things.txt.
▶ cat things.txt
Zero
One
Two
▶ cat newthings.txt
One
Two
Three
Four
▶ cat newthings.txt | anew things.txt
Three
Four
▶ cat things.txt
Zero
One
Two
Three
Four
Note that the new lines added to things.txt are also sent to stdout, this allows for them to
be redirected to another file:
▶ cat newthings.txt | anew things.txt > added-lines.txt
▶ cat added-lines.txt
Three
Four
- To view the output in stdout, but not append to the file, use the dry-run option
-dor--dry-run. - To append to the file, but not print anything to stdout, use quiet mode
-qor--quiet. - To trim the lines before saving to file, use trim
-tor--trim.
Download the binary for your platform from the Releases page.
git clone https://github.com/Periecle/anew.git
cd anew
cargo build --release