Profile PictureSundeep Agarwal

CLI text processing with GNU Coreutils

0 ratings


Any beginner learning Linux command line tools would come across the cat command within the first week. Sooner or later, they'll come to know popular text processing tools like grepheadtailtrsort, etc. If you were like me, you'd come across sed and awk, shudder at their complexity and prefer to use a scripting language like Perl and text editors like Vim instead (don't worry, I've already corrected that mistake).

Knowing power tools like grepsed and awk can help solve most of your text processing needs. So, why would you want to learn text processing tools from the coreutils package? The biggest motivation would be faster execution since these tools are optimized for the use cases they solve. And there's always the advantage of not having to write code (and test that solution) if there's an existing tool to solve the problem.

This book will teach you more than twenty of such specialized text processing tools provided by the GNU coreutils package. Plenty of examples and exercises are provided to make it easier to understand a particular tool and its various features.

Promo video


You should be familiar with command line usage in a Unix-like environment. You should also be comfortable with concepts like file redirection and command pipelines.

You are also expected to get comfortable with reading manuals, searching online, visiting external links provided for further reading, tinkering with illustrated examples, asking for help when you are stuck and so on. In other words, be proactive and curious instead of just consuming the content passively.


In my opinion the book does a great job of quickly presenting examples of how commands can be used and then paired up to achieve new or interesting ways of manipulating data. Throughout the text there are little highlights offering tips on extra functionality or limitations of certain commands. For instance, when discussing the shuf command we're warned that shuf will not work with multiple files. However, we can merge multiple files together (using the cat command) and then pass them to shuf. These little gems of wisdom add a dimension to the book and will likely save the reader some time wondering why their scripts are not working as expected — book review by Jesse Smith on

I discovered your books recently and they’re awesome, thank you! As a 20 year *nix they made me realize how much more there are to these rock solid and ancient tools, once you spend the time to actually learn the intricacies of them — feedback on reddit

Sample chapters

For a preview of the book, see sample chapters on GitHub.

GitHub repo

Visit for markdown source, example files, exercise solutions and other details related to the book.


  1. Preface
  2. Introduction
  3. cat and tac
  4. head and tail
  5. tr
  6. cut
  7. seq
  8. shuf
  9. paste
  10. pr
  11. fold and fmt
  12. sort
  13. uniq
  14. comm
  15. join
  16. nl
  17. wc
  18. split
  19. csplit
  20. expand and unexpand
  21. basename and dirname
  22. What next?

Feedback and Errata

I would highly appreciate it if you'd let me know how you felt about this ebook. It could be anything from a simple thank you, Gumroad rating, pointing out a typo, mistakes in code snippets, which aspects of the book worked for you (or didn't!) and so on. Reader feedback is essential and especially so for self-published authors.

You can reach me via:

Add to cart
1,224 sales

You'll get PDF and EPUB versions of the book.

145 pages
Last Updated
Copy product URL

CLI text processing with GNU Coreutils

0 ratings
Add to cart