{"id":27443933,"url":"https://github.com/puutaro/aku","last_synced_at":"2025-04-15T02:58:16.904Z","repository":{"id":286967918,"uuid":"963119472","full_name":"puutaro/aku","owner":"puutaro","description":"util by awk","archived":false,"fork":false,"pushed_at":"2025-04-15T02:57:37.000Z","size":66,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-15T02:58:13.973Z","etag":null,"topics":["awk","awk-script","cli","shell-script"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/puutaro.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2025-04-09T07:28:22.000Z","updated_at":"2025-04-15T02:57:40.000Z","dependencies_parsed_at":"2025-04-09T09:21:45.291Z","dependency_job_id":"5064cf97-ec41-4d68-9018-7e930e511910","html_url":"https://github.com/puutaro/aku","commit_stats":null,"previous_names":["puutaro/aku"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/puutaro%2Faku","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/puutaro%2Faku/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/puutaro%2Faku/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/puutaro%2Faku/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/puutaro","download_url":"https://codeload.github.com/puutaro/aku/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248997094,"owners_count":21195797,"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":["awk","awk-script","cli","shell-script"],"created_at":"2025-04-15T02:58:16.390Z","updated_at":"2025-04-15T02:58:16.898Z","avatar_url":"https://github.com/puutaro.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# aku\n\nUtil by awk for Linux\n\nTable of Sub cmd\n-----------------\n\u003c!-- vim-markdown-toc GFM --\u003e\n\n* [Install or update](#install-or-update)\n* [Uninstall](#uninstall)\n* [SUB_CMD](#sub_cmd)\n    * [Awk](#awk)\n    * [Trim](#trim)\n    * [Cut](#cut)\n    * [C2s](#c2s)\n    * [Mch](#mch)\n    * [Rep](#rep)\n    * [Hld](#hld)\n    * [Up](#up)\n\t\t* [If](#if)\n\t\t* [Tr](#tr)\n\n## Install or update\n\n```\ncurl https://raw.githubusercontent.com/puutaro/aku/refs/heads/master/install.sh | sudo bash\n\n```\n\n## Uninstall\n\n```sh.sh\n\nsudo rm /usr/local/bin/aku \\\n\u0026\u0026 sudo rm -rf /usr/local/bin/aku_libs\n\n```\n\n- gnu awk require, set gnu awk path by bellow [awk sub cmd](#awk)\n\n\n## SUB_CMD\n\n### Awk\n\nSet awk path\n\n#### [ARG]\n\n- `${awk path}`\n\nregister awk path\n\n- `-`\n\nremove register awk path\n\n- `(blank)`\n\nshow register awk path\n\n### Trim\n\ntrim space and tab from line\n\n#### [ARG]\n#### Arg or stdin\n#### [Option]\n\n#### --delete-prefix|-p\n\t\tdelete prefix line\n- [Ex]\n\n```sh.sh\naku trim \"aa\nbb\n//cc\n#dd\" -p \"#\" -p \"//\"\n\n-\u003e\naa\nbb\"\n\n```\n\n#### --delete-contain|-c\n\t\tdelete contain line\n\n\n- [Ex]\n\n```sh.sh\naku trim \"aa\nbb\n//cc\n#dd\" -c \"#\" -c \"bb\"\n\n-\u003e\naa\n```\n\n#### --delete-suffix|-s\n\t\tdelete suffix line\n\n\n- [Ex]\n\n```sh.sh\naku trim \"aa\nbbdd\n//cc\n#dd\" -s \"dd\" -s \"cc\"\n\n-\u003e\naa\n```\n\n#### --delete-regex|-p\n\t\tdelete regex line\n\n\n- [Ex]\n\n```sh.sh\naku trim \"aa\nbb\n//cc\n#dd\" -r \".*cc.*\" -r \".*bb.*\"\n\n-\u003e\naa\n```\n\n#### --and|-a\n\t\tand condition\n\t\t* This also apply to between regexs and contains\n\n\n- [Ex1]\n\n```sh.sh\naku trim \"aa\ncbb\n//ccbb\n#caabb\" -p \"c\" -s \"bb\" -a\n\n-\u003e\naa\n```\n\n- [Ex2] contain \"and\"\n\n```sh.sh\naku trim \"aa\ncbb\n//ccabsedsbb\n#caaabsedsbb\" -c \"abs\" -c \"ads\" -a\n\n-\u003e\naa\n```\n\n- [Ex2] contain and regex \"and\"\n\n```sh.sh\naku trim \"aa\ncbb\n//ccabsedsbb\n#caaabsedsbb\" -r \".*abs.*\" -c \"ads\" -a\n\n-\u003e\naa\n```\n\n### Cut\n\nCut field by awk spec\n\n### [ARG]\n\tArg or stdin\n### [Option]\n\n#### --field-num|-f\n\t\ttarge field\n\n- [Ex1] single field\n\n```\necho \"aa    bb   cc    #dd\" | aku cut -f \"2\" | aku cut\n\n-\u003e\nbb\n```\n\n- [Ex2] multiple field\n\n```sh.sh\necho \"aa    bb   cc    #dd\" | aku cut -f \"1\" -f \"3-4\"\n\n-\u003e\naa\tcc\t#dd\n\n### --delimitter|-d\n\t\tdelimitter (default is space)\n- [Ex1] string delimitter\necho \"aaAAAbbAAAccAAA#dd\" | aku cut -f \"2\" -d *AA\"\n\n-\u003e\nbb\n```\n\n- [Ex2] consec space delimiter\n\n```sh.sh\necho \"aa  bb     cc      #dd\" | aku cut -f \"2\" -d \" \"\n\n-\u003e\nbb\n```\n\n#### --row-num|-r\n\t\ttarget row (default: all)\n- [Ex1] single row\n\n```sh.sh\necho ~\" | aku cut -r \"2\" | aku cut\n```\n\n- [Ex2] multiple row\n\n```sh.sh\necho \"~\" | aku cut -r \"1\" -r \"3-4\"\n```\n\n- [Ex3] multiple row by end range\n\n```sh.sh\necho \"~\" | aku cut -r \"1\" -r \"-4\"\n```\n\n\n### C2s\n\nCammel case to snake case \n\n#### ARG\n\nArg or stdin\n\n#### Option\n\n#### --reverse|-r\n\nsnake case to camel case\n\n#### --space|-s\n\nreplace underbar to space\n\n- Ex1\n\n```sh.sh\nc2s \"aaBB\"\n\n-\u003e\naa_bb\n\n```\n\n- Ex2\n\n```sh.sh\nc2s \"aa_bb\"\n-\u003e\naaBb\n\n```\n\n### Mch\n\nThis is Matcher.\nAs feature, enable matching to field by regex\n\n\n### [ARG]\n\n Arg or stdin\n \n### [Option]\n\n#### --field-num-to-regex|-f\n\ntarget field to regex\n\n- [Ex1] single field\n\n```sh.sh\necho \"aa bb cc #dd\" | aku mch -f \"1:^aa$\"\n\n-\u003e\naa bb cc #dd\n```\n\n- [Ex2] multiple field\n\n```sh.sh\necho \"aa bb cc #dd\" | aku mch -f \"1:^aa$\" -f \"3-4:.*\"\n\n-\u003e\naa bb cc #dd\n```\n\n- [Ex3] multiple field by end range\n  \n```sh.sh\necho \"aa bb cc #dd\" | aku mch -f \"1:^aa$\" -f \"-4:.*\"\n\n-\u003e\naa bb cc #dd\n```\n\n- [Ex4] multiple field by end range\n\n```sh.sh\necho \"aa bb cc #dd\" | aku mch -f \"1:^aa$\" -f \"2-:.*\"\n\n-\u003e\naa bb cc #dd\n```\n\n#### --negative-field-num-to-regex|-n\n                negative target field to regex\n\t\t\n- [Ex1] single negative field\n\n```sh.sh\necho \"aa bb cc #dd\" | aku mch -n \"1:^cc$\"\n\n-\u003e\naa bb cc #dd\n```\n\n- [Ex2] multiple negative field\n\n```sh.sh\necho \"aa bb cc #dd\" | aku mch -n \"1:^cc$\" -n \"3-4:tt\"\n\n-\u003e\naa bb cc #dd\n```\n\n- [Ex3] multiple negative field by end range\n\n```sh.sh\necho \"aa bb cc #dd\" | aku mch -n \"1:^rr$\" -n \"-4:tt\"\n\n-\u003e\naa bb cc #dd\n```\n\n- [Ex4] multiple negative field by end range\n\n```sh.sh\necho \"aa bb cc #dd\" | aku mch -f \"1:^rr$\" -f \"2-:ttx22\n\n-\u003e\naa bb cc #dd\n```\n\n#### --delimitter|-d\n\n delimitter (default is space)\n\n- [Ex1] string delimitter\n\n```sh.sh\necho \"aaAAAbbAAAccAAA#dd\" | aku cut -f \"2:bb\" -d *AA\"\n\n-\u003e\naaAAAbbAAAccAAA#dd\n```\n\n#### --and|-a\n\nenable and match\n\n- [Ex]\n\n```sh.sh\necho \"aa bb cc #dd\" | aku mch -n \"1:^bb$\" -f \"1:^aa$\" -a\n\n-\u003e\naa bb cc #dd\n```\n## Rep\n\nReplace field\n\n### ARG\n\nArg or stdin\n\n#### first arg\n\ntarget field to remove regex\n\n- format -\u003e fieild num:regex\n\n- Ex1 single field\n\n```sh.sh\necho \"aa1 bb cc #dd\" | aku rep \"1:^aa\"\n\n-\u003e\n1 bb cc #dd\n```\n\n- Ex3 by end range\n\n```sh.sh\necho \"aa bb cc #dd\" | aku rep \"-4:^[a-z]\"\n\n-\u003e\na b c #dd\n```\n\n- Ex4 by end range\n\n```sh.sh\necho \"aa bb cc #dd\" | aku rep \"2-:^[a-z]\"\n\n-\u003e\naa b c #dd\n```\n\n#### second arg\n\n- format -\u003e fieild num:regex\n\nreplace first arg field to str with remove regex\n\n- Ex1 single field\n\n```sh.sh\necho \"aa bb cc #dd\" | aku rep \"1:^[a-z]\" \"1:CC\"\n\n-\u003e\nCCa bb cc #dd\n```\n\n- Ex2 by range\n\n```sh.sh\necho \"aa bb cc #dd\" | aku rep \"2-:^[a-z]\" \"3-4:CC\"\n\n-\u003e\naa b CCc #dd\n```\n\n- Ex3 by end range\n\n```sh.sh\necho \"aa bb cc #dd\" | aku rep \"2:^[a-z]\" \"-4:CC\"\n\n-\u003e\naa UUb cc #dd\n```\n\n- Ex4 by end range\n\n```sh.sh\necho \"aa bb cc #dd\" | aku rep \"3:[a-z]$\" \"2-:TTx22\n\n-\u003e\naa bb cTT #dd\n```\n\n### Option\n\n#### --delimitter|-d\n\ndelimitter (default is space)\n\n- Ex string delimitter\n\n```sh.sh\necho \"aaAAAbbAAAccAAA#dd\" | aku rep -f \"2:bb\" -d *AA\"\n\n-\u003e\naaAAAbbAAAccAAA#dd\n```\n\n#### --output-delimiter|-o\n\noutput delimiter (deafult is delimiter)\n\n- Ex\n\n```sh.sh\necho \"aa  bb     cc      #dd\" | aku rep -o \"\t\"\n\n-\u003e\nbb cc\n```\n\n#### --turn|-t\n\ngnu awk gensub third parameter\n\n- Ex\n\n```sh.sh\necho \"aa bb cc #dd\" | aku rep -f \"1:B\" -t \"1\"\n\n-\u003e\nBa bb cc #dd\n\n```\n\n## Hld\n\nExtract row between start holder and end holder\n\n### [ARG]\nArg or stdin\n\n### [Option]\n\n#### --start-holder|-s\n\nstart holder\n\n#### --end-holder|-e\n\nend holder\n\n- [Ex1] one pair\n\n```sh.sh\necho \"aa\nbb\ncc\ndd\nee\nff\" | aku hld -s \"^aa$\" -e \"^dd$\"\n\n-\u003e\naa\nbb\ncc\ndd\n```\n\n- [Ex2] mutiple holder\n\n```sh.sh\necho \"aa\nbb\ncc\ndd\nee\nff\" | aku hld -s \"^aa$\" -e \"^dd$\"  -s \"^ee$\" -e \"^ff$\"\n\n-\u003e\naa\nbb\ncc\ndd\nee\nff\n```\n\n- [Ex3] duplication holder\n\n```sh.sh\necho \"aa\nbb\ncc\ndd\nee\nfff\" | aku hld -s \"^aa$\" -e \"^dd$\"  -s \"^bb$\" -e \"^ee$\"\n\n-\u003e\n\"aa\nbb\ncc\ndd\nee\n```\n\n#### --negative|-n\n\nnegative match\n\n\n- [Ex1] one pair\n\n```sh.sh\n  \necho \"aa\nbb\ncc\ndd\nee\nff\" | aku hld -s \"^aa$\" -e/x22/^cc$x22 -n\n\n-\u003e\ndd\nee\nff\n```\n\n- [Ex2] mutiple holder\n\n```sh.sh\necho \"aa\nbb\ncc\ndd\nee\nff\" | aku hld -s \"^aa$\" -e \"^cc$\"  -s \"^dd$\" -e \"^ee$\" -n\n\n-\u003e\nff\n```\n\n- [Ex3] duplication holder\n\n```sh.sh\necho \"aa\nbb\ncc\ndd\nee\nfff\" | aku hld -s \"^aa$\" -e \"^dd$\"  \"^bb$\" -e \"^ee$\" -n\n\n-\u003e\nff\n```\n\n#### --holder-layout|-l\n\noutput specify format\nvalue: \n- start: only start hodler\n- end: only end holder no bound str\n- left: output line with start holder prefix by tab separated\n- blank: normal\n  \n##### this option cannot specify sametime with negative option\n\n\n- [Ex] start\n\n```sh.sh\necho \"aa\nbb\ncc\ndd\nee\nff\" | aku hld -s \"^aa$\" -e/x22/^cc$x22 -l start\n\n-\u003e\naa\nbb\n```\n\n- [Ex] end\n\n```sh.sh\necho \"aa\nbb\ncc\ndd\nee\nff\" | aku hld -s \"^aa$\" -e/x22/^cc$x22 -l end\n\n-\u003e\nbb\ncc\n```\n\n- [Ex] out\n\n  ```sh.sh\necho \"aa\nbb\ncc\ndd\nee\nff\" | aku hld -s \"^aa$\" -e/x22/^cc$x22 -l out\n\n-\u003e\nbb\n```\n\n- [Ex] left\n\n```sh.sh\necho \"aa\nbb\ncc\ndd\nee\nff\" | aku hld -s \"^aa$\" -e/x22/^cc$x22 -l left\n\n-\u003e\naa\tbb\naa\tcc\n```\n\n#### --boudary-str|-b\n\nput string after end holder \n\n##### this option enable in blank and end layout: becuase of require end holder\n\n- [Ex]\n\n```sh.sh\necho \"aa\nbb\ncc\ndd\nee\nff\" | aku hld -s \"^aa$\" -e/x22/^cc$x22 -b \"\n\"\n\n-\u003e\naa\nbb\ncc\n```\n\n## Trm\n\ntrim space and tab from line\n\n### Arg\n\n- [Ex] trim char\ndefault is space / tab / zenkaku space\n\n- [Ex] default trim char\n\n```sh.sh\necho \" aa \t\" | aku trim\n\n-\u003e\naa\n```\n\n-  [Ex] specify char\n\n```sh.sh\naku trim \"cb \" -i \"cc aa bb cc\"\n\n-\u003e\naa\n```\n\n- [Ex] specify char by consec\n\n```sh.sh\necho \"cc aa bb cc\" | aku trim \"c \" \" \" \"b \"\n\n-\u003e\naa\n```\n\n### Option\n\n#### --delete-prefix|-p\n\ndelete prefix line\n\n\n- [Ex]\n\n```sh.sh\necho -e \"aa\nbb\n//cc\n#dd\" | aku trim -p \"#\" -p \"//\"\n\n-\u003e\naa\nbb\"\n```\n\n#### --delete-contain|-c\n\t\tdelete contain line\n- [Ex]\n\n```sh.sh\naku trim -i \"aa\nbb\n//cc\n#dd\" -c \"#\" -c \"bb\"\n\n-\u003e\naa\n```\n\n#### --delete-suffix|-s\n\ndelete suffix line\n\n- [Ex]\n\n```sh.sh\necho -e \"aa\nbbdd\n//cc\n#dd\" | aku trim -s \"dd\" -s \"cc\"\n\n-\u003e\naa\n```\n\n#### --delete-regex|-p\n\ntdelete regex line\n\n- [Ex]\n\n```sh.sh\naku trim \"aa\nbb\n//cc\n#dd\" -r \".*cc.*\" -r \".*bb.*\"\n\n-\u003e\naa\n```\n\n#### --and|-a\n\nand condition\n\n* This also apply to between regexs and contains\n\n- [Ex1]\n\n```sh.sh\naku trim -i \"aa\ncbb\n//ccbb\n#caabb\" -p \"c\" -s \"bb\" -a\n\n-\u003e\naa\n```\n\n- [Ex2] contain \"and\"\n\n```sh.sh\naku trim -i \"aa\ncbb\n//ccabsedsbb\n#caaabsedsbb\" -c \"abs\" -c \"ads\" -a\n\n-\u003e\naa\n```\n\n- [Ex2] contain and regex \"and\"\n\n```sh.sh\naku trim -i \"aa\ncbb\n//ccabsedsbb\n#caaabsedsbb\" -r \".*abs.*\" -c \"ads\" -a\n\n-\u003e\naa\n```\n\n## Up\n\nto lowercase\n\n\n### Arg\n\n- Ex\n\naku up \"aa\"\n-\u003e\nAA\n\n### Option\n\n\n#### --position|-p\n\nspecify position\n\n- Ex\n\n```sh.sh\naku up \"aaaa\" -p 1\n-\u003e\nAaaa\n```\n\n- Ex\n\n```sh.sh\naku up \"aaaa\" -p 2-4\n-\u003e\naAAA\n```\n\n- Ex\n\n```sh.sh\naku up \"aaaa\" -p 1\n-\u003e\nAaaa\n```\n\n- Ex\n\n```sh.sh\naku up \"aaaa\" -p 2-4\n-\u003e\naAAA\n```\n\n- Ex\n\n```sh.sh\n\naku up \"aaaa\" -p -3\n-\u003e\nAAAa\n\n```\n\n#### --lower|-l\n\n- Ex\n\n```sh.sh\naku up \"AAAA\" -l -3\n-\u003e\naaaA\n```\n## If\n\ngive if branch in pipe\n\n### ARG\n\nArg\n\n#### first arg\n\nif condition regex\n\n#### second arg\n\nproc cmd\n\n- default first cmd: echo \"${0}\"\n\n- @{0}, @{1}, @{2}.. to $0, $1, $2..  in awk\n\n- Ex confition for stdout\n\n```sh.sh\necho \"aa\nbb\" | aku if  \"aa\" \"sed 's/^/PREFIX/'\"\n\n-\u003e\nPREFIXaa\nbb\n```\n\n- Ex confition for proc\n\n```sh.sh\necho \"aa\nbb\" | aku if  \"aa\" \"touch @{0}; echo @{0}\"\n```\n\n## Tr\n\nTotal replace\n\n### ARG\n\nArg\n\n#### first arg\n\nregex (default : newline)\n\n#### second arg (default : blank)\n\nreplace str\n\n- Ex remove newline\n\n```.sh.sh\necho \"aa\nbb\" | aku tr\n\n-\u003e\naabb\n```\n\n- Ex replace string\n\n```.sh.sh\necho \"aa\nbb\" | aku tr \"(a)\nb\" \"\\\\1NEWLINE\"\n\n-\u003e\naNEWLINEb\n```\n\n### Option\n\n#### --input-i\n\nrecieve input\n```\n\n- Ex\n\n```.sh.sh\naku tr \"aa\" -i \"aabb\"\n-\u003e\nbb\n```\n\n#### --turn|-t\n\n- Ex\n\n```.sh.sh\necho \"aa\nbb\" | aku tr \"(a)\nb\" \"\\\\1NEWLINE\" -t \n-\u003e\naNEWLINEb\n```\n\n- Ex range specify -end\n\n```.sh.sh\necho \"aa\nbb\ncc\ndd\" | aku tr -t -2\n-\u003e\naabbcc\ndd\n```\n\n- Ex range specify -start \n\n```.sh.sh\necho \"aa\nbb\ncc\ndd\" | aku tr -t 2-\n-\u003e\naa\nbbccdd\n```\n\n- Ex range specify start-end \n\n```.sh.sh\necho \"aa\nbb\ncc\ndd\" | aku tr -t 2-4\n-\u003e\naa\nbbccdd\n```\n\n- Ex multiple \n\n```.sh.sh\necho \"aa\nbb\ncc\ndd\nee\nff\" | aku tr -t 1-2 -t 4-5\n-\u003e\naabbcc\nddeeff\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpuutaro%2Faku","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpuutaro%2Faku","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpuutaro%2Faku/lists"}