{"id":17617382,"url":"https://github.com/learnbyexample/cli_text_processing_coreutils","last_synced_at":"2025-05-05T18:47:06.823Z","repository":{"id":45681335,"uuid":"393648914","full_name":"learnbyexample/cli_text_processing_coreutils","owner":"learnbyexample","description":"Example based guide for specialized text processing with GNU Coreutils","archived":false,"fork":false,"pushed_at":"2024-05-07T09:34:58.000Z","size":3119,"stargazers_count":192,"open_issues_count":0,"forks_count":9,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-01-02T21:16:03.309Z","etag":null,"topics":["command-line","coreutils","ebook","gnu","linux","text-processing"],"latest_commit_sha":null,"homepage":"https://learnbyexample.github.io/cli_text_processing_coreutils/","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/learnbyexample.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-08-07T10:15:06.000Z","updated_at":"2024-11-27T15:08:07.000Z","dependencies_parsed_at":"2024-05-07T10:39:19.523Z","dependency_job_id":"961156c4-d2bd-4e93-8beb-9daa21701602","html_url":"https://github.com/learnbyexample/cli_text_processing_coreutils","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/learnbyexample%2Fcli_text_processing_coreutils","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/learnbyexample%2Fcli_text_processing_coreutils/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/learnbyexample%2Fcli_text_processing_coreutils/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/learnbyexample%2Fcli_text_processing_coreutils/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/learnbyexample","download_url":"https://codeload.github.com/learnbyexample/cli_text_processing_coreutils/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":233288157,"owners_count":18653431,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["command-line","coreutils","ebook","gnu","linux","text-processing"],"created_at":"2024-10-22T19:13:15.629Z","updated_at":"2025-01-10T03:10:16.389Z","avatar_url":"https://github.com/learnbyexample.png","language":"Shell","readme":"# CLI text processing with GNU Coreutils\n\nYou might be already aware of popular coreutils commands like `head`, `tail`, `tr`, `sort` and so on. This book will teach you more than twenty of such specialized text processing tools provided by the `GNU coreutils` package. Visit https://youtu.be/oCnJLu_PUbY for a short video about the book.\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"./images/cli_coreutils_ls.png\" alt=\"CLI text processing with GNU Coreutils ebook cover image\" /\u003e\u003c/p\u003e\n\nThe book also includes exercises to test your understanding, which are presented together as a single file in this repo — [Exercises.md](./exercises/Exercises.md).\n\nFor solutions to the exercises, see [Exercise_solutions.md](./exercises/Exercise_solutions.md).\n\nSee [Version_changes.md](./Version_changes.md) to keep track of changes made to the book.\n\n\u003cbr\u003e\n\n# E-book\n\n* You can purchase the pdf/epub versions of the book using these links:\n    * https://learnbyexample.gumroad.com/l/cli_coreutils\n    * https://leanpub.com/cli_coreutils\n* You can also get the book as part of these bundles:\n    * **Linux CLI Text Processing** bundle from https://learnbyexample.gumroad.com/l/linux-cli-text-processing or https://leanpub.com/b/linux-cli-text-processing\n    * **All books bundle** bundle from https://learnbyexample.gumroad.com/l/all-books\n        * Includes all my programming books\n* See https://learnbyexample.github.io/books/ for a list of other books\n\nFor a preview of the book, see [sample chapters](./sample_chapters/cli_text_processing_coreutils_sample.pdf).\n\nThe book can also be [viewed as a single markdown file in this repo](./cli_text_processing_coreutils.md). See my blogpost on [generating pdfs from markdown using pandoc](https://learnbyexample.github.io/customizing-pandoc/) if you are interested in the ebook creation process.\n\nFor web version of the book, visit https://learnbyexample.github.io/cli_text_processing_coreutils/\n\n\u003cbr\u003e\n\n# Testimonials\n\n\u003eIn 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.\n\u003e\n\u003e — book review by Jesse Smith on [distrowatch.com](https://distrowatch.com/weekly.php?issue=20211206#book)\n\n\u003eI 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.\n\u003e\n\u003e — feedback on [reddit](https://old.reddit.com/r/commandline/comments/1byumd6/learn_gnu_coreutils_text_processing_tools_like/l2pk5bd/)\n\n\u003cbr\u003e\n\n# Feedback\n\n⚠️ ⚠️ Please DO NOT submit pull requests. Main reason being any modification requires changes in multiple places.\n\nI would highly appreciate it if you'd let me know how you felt about this book. It could be anything from a simple thank you, 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.\n\nYou can reach me via:\n\n* Issue Manager: [https://github.com/learnbyexample/cli_text_processing_coreutils/issues](https://github.com/learnbyexample/cli_text_processing_coreutils/issues)\n* E-mail: `echo 'bGVhcm5ieWV4YW1wbGUubmV0QGdtYWlsLmNvbQo=' | base64 --decode`\n* Twitter: [https://twitter.com/learn_byexample](https://twitter.com/learn_byexample)\n\n\u003cbr\u003e\n\n# Table of Contents\n\n1) Preface\n2) Introduction\n3) cat and tac\n4) head and tail\n5) tr\n6) cut\n7) seq\n8) shuf\n9) paste\n10) pr\n11) fold and fmt\n12) sort\n13) uniq\n14) comm\n15) join\n16) nl\n17) wc\n18) split\n19) csplit\n20) expand and unexpand\n21) basename and dirname\n22) What next?\n\n\u003cbr\u003e\n\n# Acknowledgements\n\n* [GNU coreutils documentation](https://www.gnu.org/software/coreutils/manual/coreutils.html) — manual and examples\n* [/r/commandline/](https://old.reddit.com/r/commandline), [/r/linux4noobs/](https://old.reddit.com/r/linux4noobs/) and [/r/linux/](https://old.reddit.com/r/linux/) — helpful forums\n* [stackoverflow](https://stackoverflow.com/) and [unix.stackexchange](https://unix.stackexchange.com/) — for getting answers to pertinent questions on coreutils and related commands\n* [tex.stackexchange](https://tex.stackexchange.com/) — for help on [pandoc](https://github.com/jgm/pandoc/) and `tex` related questions\n* [canva](https://www.canva.com/) — cover image\n* [Warning](https://commons.wikimedia.org/wiki/File:Warning_icon.svg) and [Info](https://commons.wikimedia.org/wiki/File:Info_icon_002.svg) icons by [Amada44](https://commons.wikimedia.org/wiki/User:Amada44) under public domain\n* [oxipng](https://github.com/shssoichiro/oxipng), [pngquant](https://pngquant.org/) and [svgcleaner](https://github.com/RazrFalcon/svgcleaner) — optimizing images\n* [SpikePy](https://github.com/SpikePy) — for spotting an ambiguous explanation\n* [mdBook](https://github.com/rust-lang/mdBook) — for web version of the book\n    * [mdBook-pagetoc](https://github.com/JorelAli/mdBook-pagetoc) — for adding table of contents for each page\n    * [minify-html](https://github.com/wilsonzlin/minify-html) — for minifying html files\n\n\u003cbr\u003e\n\n# License\n\nThe book is licensed under a [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://creativecommons.org/licenses/by-nc-sa/4.0/).\n\nThe code snippets are licensed under MIT, see [LICENSE](./LICENSE) file.\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flearnbyexample%2Fcli_text_processing_coreutils","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flearnbyexample%2Fcli_text_processing_coreutils","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flearnbyexample%2Fcli_text_processing_coreutils/lists"}