{"id":32216427,"url":"https://github.com/tecolicom/app-ansicolumn","last_synced_at":"2025-10-22T07:59:19.273Z","repository":{"id":50287099,"uuid":"300160493","full_name":"tecolicom/App-ansicolumn","owner":"tecolicom","description":"ANSI sequence aware column command","archived":false,"fork":false,"pushed_at":"2025-06-16T09:54:12.000Z","size":17640,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-22T07:59:07.680Z","etag":null,"topics":["ansi-colors","cli","column","column-generation","command-line","perl","terminal","text-processing"],"latest_commit_sha":null,"homepage":"","language":"Perl","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tecolicom.png","metadata":{"files":{"readme":"README.md","changelog":"Changes","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":"2020-10-01T05:46:03.000Z","updated_at":"2025-06-16T09:54:16.000Z","dependencies_parsed_at":"2024-03-21T09:45:58.502Z","dependency_job_id":"747f0b79-e056-4d7c-8215-1a832ec1496d","html_url":"https://github.com/tecolicom/App-ansicolumn","commit_stats":null,"previous_names":["kaz-utashiro/app-ansicolumn"],"tags_count":73,"template":false,"template_full_name":null,"purl":"pkg:github/tecolicom/App-ansicolumn","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tecolicom%2FApp-ansicolumn","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tecolicom%2FApp-ansicolumn/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tecolicom%2FApp-ansicolumn/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tecolicom%2FApp-ansicolumn/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tecolicom","download_url":"https://codeload.github.com/tecolicom/App-ansicolumn/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tecolicom%2FApp-ansicolumn/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280402192,"owners_count":26324587,"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","status":"online","status_checked_at":"2025-10-22T02:00:06.515Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["ansi-colors","cli","column","column-generation","command-line","perl","terminal","text-processing"],"created_at":"2025-10-22T07:59:17.385Z","updated_at":"2025-10-22T07:59:19.264Z","avatar_url":"https://github.com/tecolicom.png","language":"Perl","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Actions Status](https://github.com/tecolicom/App-ansicolumn/workflows/test/badge.svg)](https://github.com/tecolicom/App-ansicolumn/actions) [![MetaCPAN Release](https://badge.fury.io/pl/App-ansicolumn.svg)](https://metacpan.org/release/App-ansicolumn)\n# NAME\n\nansicolumn - ANSI terminal sequence aware column command\n\n# SYNOPSIS\n\nansicolumn \\[options\\] \\[file ...\\]\n\n    -w#, -c#             output width\n    -s#                  separator string\n    -l#                  maximum number of table columns\n    -x                   exchange rows and columns\n    -o#                  output separator\n\n    -P[#], --page=#      page mode, with optional page length\n    -U[#], --up=#        show in N-up format (-WC# --linestyle=wrap)\n    --2up .. --9up       same as -U2 .. -U9\n    -D,  --document      document mode\n    -V,  --parallel      parallel view mode\n    -H,  --filename      print filename header in parallel view mode\n    -I,  --ignore-empty  ignore empty files\n    -X#, --cell=#        set text width for files in parallel view mode\n    -C#, --pane=#        number of panes\n    -S#, --pane-width=#  pane width\n    -W,  --widen         widen to terminal width\n    -p,  --paragraph     paragraph mode\n    -r,  --regex-sep     treat separator string as regex\n\n    -B,  --border[=#]    print border with optional style\n    -F,  --fillup[=#]    fill-up unit (pane|page|none)\n\n    --height=#           page height\n    --column-unit=#      column unit (default 8)\n    --margin=#           column margin width (default 1)\n    --linestyle=#        folding style (none|truncate|wrap|wordwrap)\n    --boundary=#         line-end boundary\n    --linebreak=#        line-break mode (none|all|runin|runout)\n    --runin=#            run-in width\n    --runout=#           run-out width\n    --runlen=#           set both run-in and run-out width\n    --[no-]pagebreak     allow page break\n    --border-style=#     border style\n    --[no-]ignore-space  ignore space in table output\n    --[no-]white-space   allow white spaces at the top of each pane\n    --[no-]isolation     page-end line isolation\n    --tabstop=#          set tab width\n    --tabhead=#          tab-head character\n    --tabspace=#         tab-space character\n    --tabstyle=#         tab style\n    --ambiguous=#        ambiguous character width (narrow|wide)\n    --pages              split file by formfeed\n\nTable style options:\n\n    -t, --table          table style output\n    -A, --table-align    align table output to column unit\n    -T, --table-tabs     align items by tabs\n    -TT                  reformat tab aligned text\n    -R#, --table-right=# right adjust table columns\n\nDefault alias options:\n\n    --board-color FG BG  board style pages with FG and BG colors\n    --white-board        black on white board\n    --black-board        white on black board\n    --green-board        white on green board\n    --slate-board        white on dark slategray board\n\n# VERSION\n\nVersion 1.45\n\n# DESCRIPTION\n\n**ansicolumn** is a [column(1)](http://man.he.net/man1/column) command clone which can handle ANSI\nterminal sequences, backspaces, and Asian wide characters.  It\nsupports traditional options and some of Linux extended, and many\nother original options.\n\n\u003cdiv\u003e\n    \u003cp\u003e\u003cimg width=\"750\" src=\"https://raw.githubusercontent.com/tecolicom/App-ansicolumn/master/images/ac-grep.png\"\u003e\n\u003c/div\u003e\n\nIn addition to normal operation, table style output (`-t`) is\nsupported as well.\n\n\u003cdiv\u003e\n    \u003cp\u003e\u003cimg width=\"750\" src=\"https://raw.githubusercontent.com/tecolicom/App-ansicolumn/master/images/ac-table.png\"\u003e\n\u003c/div\u003e\n\nIn contrast to the original [column(1)](http://man.he.net/man1/column) command which handles mainly\nshort item list, and Linux variant which has been expanded to have\nritch table style output, **ansicolumn(1)** has been expanded to show\ntext file in multi-column view.  Combined with pagenation and\ndocument-friendly folding mechanism, it can be used as a document\nviewing preprocessor for pager program.\n\n\u003cdiv\u003e\n    \u003cp\u003e\u003cimg width=\"750\" src=\"https://raw.githubusercontent.com/tecolicom/App-ansicolumn/master/images/ac-man.png\"\u003e\n\u003c/div\u003e\n\nIn order to accurately display the contents of the file, blank lines\nthat were ignored by the original [column(1)](http://man.he.net/man1/column) command are not\nignored.\n\nWhen multiple files are given as arguments, it gets in the parallel\nview mode, and show all files in parallel.  It's convenient to see\nmultiple files side-by-side.\n\n\u003cdiv\u003e\n    \u003cp\u003e\u003cimg width=\"750\" src=\"https://raw.githubusercontent.com/tecolicom/App-ansicolumn/master/images/ac-cell.png\"\u003e\n\u003c/div\u003e\n\n## COMPATIBLE OPTIONS\n\nThe column utility formats its input into multiple columns.  Rows are\nfilled before columns.  Input is taken from _file_ operands, or, by\ndefault, from the standard input.\n\n- **-w**#, **-c**#, **--width**=#, **--output-width**=#\n\n    Output is formatted for a display columns wide.  See [\"CALCULATION\"](#calculation)\n    section.\n\n    Accept `-c` for compatibility, but `-w` is more popular.\n\n- **-s**#, **--separator**=#\n\n    Specify a set of characters to be used to delimit columns for the -t\n    option.  When used with `--regex-sep` or `-r` option, it is used as\n    regex rather than character set.\n\n- **-t**, **--table**\n\n    Determine the number of columns the input contains and create a\n    table.  Columns are delimited with whitespace, by default, or\n    with the characters supplied using the -s option.  Useful for\n    pretty-printing displays.\n\n    Unlike original [column(1)](http://man.he.net/man1/column) command, empty field is not ignored.\n\n- **-l**#, **--table-columns-limit**=#\n\n    Specify maximal number of the input columns.  The last column will\n    contain all remaining line data if the limit is smaller than the\n    number of the columns in the input data.\n\n- **-x**, **--fillrows**\n\n    Fill columns before filling rows.\n\n- **-o**#, **--output-separator**=#\n\n    When used `--table` or `-t` option, each column are joined by two\n    space characters (' ') by default.  This option will change it.\n\n- **-R**#, **--table-right**=#\n\n    Right align text in these columns.  Multiple columns are separated by\n    commas.  Support only numbers.\n\n    Parameters are parsed by the [Getopt::EX::Numbers](https://metacpan.org/pod/Getopt%3A%3AEX%3A%3ANumbers) module, so you can\n    specify a range of numbers, as in `-R2:5` which is equivalent to\n    `-R2,3,4,5`. Option `-R:` makes all fields right-aligned.\n\n## EXTENDED OPTIONS\n\n- **-P**\\[#\\], **--page**\\[=#\\]\n\n    Page mode.  Set these options.\n\n        --height=# or 1-\n        --linestyle=wrap\n        --border\n        --fillup\n\n    If optional number is given, it is used as a page height unless option\n    `--height` exists.  Otherwise page height is set to terminal height\n    minus one.\n\n- **-U**#, **--up**=#, **--2up** .. **--9up**\n\n    Show in N-up format.  Almost same as `-P` but does not set page\n    height.  This is convenient when you want multi-column output without\n    page control.\n\n- **-D**, **--document**\n\n    Document mode.  Set these options.\n\n        --widen\n        --linebreak=all\n        --linestyle=wrap\n        --boundary=word\n        --no-white-space\n        --no-isolation\n\n    Next command display DOCX text in 3-up format using\n    [App::optex::textconv](https://metacpan.org/pod/App%3A%3Aoptex%3A%3Atextconv).\n\n        optex -Mtextconv ansicolumn -DPC3 foo.docx | less\n\n- **-V**, **--**\\[**no-**\\]**parallel**\n\n    Parallel view mode.  Implicitly enabled when multiple files are\n    specified.  Use `--no-parallel` to disable.\n\n    Set these options, and cancel all pagenation behavior.\n\n        --widen\n        --linestyle=wrap\n        --border\n\n    By default, all files are displayed in parallel.  In other words,\n    number of pane is set as a number of files.  You can use `-C` option\n    to specify number of files displayed simultaneously.\n\n    You can use this option mixed with `-D` option to see document files.\n\n    If you want to display multiple parts in a single stream in parallel,\n    use the `--pages` option. It will split the data by form feed\n    characters and treat each part as a separate file.\n\n- **-H**, **--filename**\n- **--filename-format**=_format_ (DEFAULT: `: %s`)\n\n    Print filename header before contents.  Currently, this option is\n    effective only in `--parallel` mode.  Filename is truncated in each\n    pane width.\n\n    This option is convenient to look over many small files at once.\n\n        ansicolumn -VHC1 *.txt | less\n\n    Filename is printed in a format given by `--filename-format` option.\n    Default is `: %s` so that making easy to move to next file by `^:`\n    pattern search.\n\n- **-I**, **--**\\[**no-**\\]**ignore-empty**\n\n    Ignore empty files.  Default false.\n\n- **-X**#, **--cell**=#\n\n    Sets the display width of each file.  This option is only valid with\n    parallel view mode.  For example, if you are displaying three files\n    and want the first file to be displayed in 80 columns and the\n    remaining files in 40 columns, specify like this:\n\n        --cell 80,40,40\n\n    This is the same as\n\n        --cell 80,40\n\n    since the last value specified is repeated.\n\n    You can also specify values relative to the default width.  For\n    example, to display the first column 20 columns more and the remaining\n    columns 10 columns less, use\n\n        --cell +20,-10\n\n    To return to the default display width for the fourth and subsequent\n    files, use\n\n        --cell +20,-10,-10,+0\n\n    If `=` is specified as the value, it is set to the width of the\n    longest line in the file.\n\n        -X=\n\n    Then all specified files will be displayed with the width of the\n    longest line they contain. `=` may be followed by a maximum value.\n\n        -X=80\n\n    will set the cell width to length of the longest line if it is less\n    than 80, or 80 if it is greater than 80.  `\u003c` may be used instead\n    of `=`.\n\n        -X'\u003c80'\n\n    The correspondence between file and display width remains the same \n    even when the number of columns to be displayed simultaneously is \n    specified with the `-C` option.\n\n- **-C**#, **--pane**=#\n\n    Output is formatted in the specified number of panes.  Setting number\n    of panes implies `--widen` option enabled.  See [\"CALCULATION\"](#calculation)\n    section.\n\n- **-S**#, **--pane-width**=#, **--pw**=#\n\n    Specify the span of each pane.  This includes border spaces.  See\n    [\"CALCULATION\"](#calculation) section.\n\n- **-W**, **--widen**\n\n    Use full width of the terminal.  Each pane is expanded to fill\n    terminal width, unless `--pane-width` is specified.\n\n- **-p**, **--paragraph**\n\n    Insert empty line between every successive non-empty lines.\n\n- **-B**, **--border**\\[=_style_\\] (DEFAULT: `box`)\n\n    Print border.  Enabled by `--page` option automatically.  If the\n    optional _style_ is given, it is used as a border style and precedes\n    to `--border-style` option.  Use `--border=none` to disable it.\n\n    Border style is specified by `--border-style` option.\n\n- **--no-border**\n\n    Shortcut for **--border=none**.\n\n- **-F**, **--fillup**\\[=`pane`|`page`|`none`\\]\n\n    Fill up final pane or page by empty lines.  Parameter is optional and\n    considered as 'pane' by default.  Set by `--page` option\n    automatically.  Use `--fillup=none` if you want to explicitly disable\n    it.\n\n    Option `-F` is a shortcut for `--fillup=pane`.\n\n- **--fillup-str**=_string_\n\n    Set string used for filling up space.  Default is empty.\n\n    Use `--fillup-str='~'` to fill up the area after EOF by `~`\n    character like [vi(1)](http://man.he.net/man1/vi) or [more(1)](http://man.he.net/man1/more).\n\n- **--height**=#\n\n    Set page height and page mode on.  See [\"CALCULATION\"](#calculation) section.\n\n- **--column-unit**=#, **--cu**=# (DEFAULT: 8)\n\n    Each column is placed at the unit of 8 by default.  This option\n    changes the number of the unit.\n\n- **--margin**=#\n\n    Each column has at least single character margin on the right side so\n    that they are not placed back-to-back.  This option specifies the\n    margin width.\n\n- **-A**, **--table-align**\n\n    Align each field in the table output to column-unit.  If this option\n    is specified, **--output-separator** option is ignored.\n    Implicitly enable the **--table** option.\n\n- **-T**, **-TT**, **--table-tabs**\n\n    This option enables the **--table** and **--table-align** option, and\n    forces to use tab characters between items.  The width of tab uses the\n    value of **--column-unit**.  Option **--table-right** does not take\n    effect.\n\n    If the **-T** option is specified twice, set the input separator as\n    repeating tabs (same as **-rs '\\\\t+'**).  So the option **-TT** can be\n    used to reformat tab aligned text.\n\n- **--linestyle**=`none`|`truncate`|`wrap`|`wordwrap`, **--ls**=`...`\n\n    Set the style of treatment for longer lines.\n    Default is `none`.\n\n    Option `--linestyle=wordrap` sets `--linestyle=wrap` and\n    `--boundary=word` at once.\n\n- **--boundary**=`none`|`word`|`space`\n\n    Set text wrap boundary.  If set as `word` or `space`, text is not\n    wrapped in the middle of alphanumeric word or non-space sequence.\n    Option `--document` set this as `word`.  See [Text::ANSI::Fold](https://metacpan.org/pod/Text%3A%3AANSI%3A%3AFold) for\n    detail.\n\n- **--linebreak**=`none`|`all`|`runin`|`runout`, **--lb**=...\n\n    Set the linebreak mode.\n\n- **--runin**=#, **--runout**=#, **--runlen**=#\n\n    Set the number of runin/runout column.  `--runlen` set both.\n    Default is both 2.\n\n    As for Japanese text, only one character can be moved with default\n    value.  Longer value allows more flexible arrangement, but makes text\n    area shorter.  Author is using the command with own `~/.ansicolumnrc`\n    like this:\n\n        option default --runin=4 --runout=4\n\n- **--**\\[**no-**\\]**pagebreak**\n\n    Move to next pane when form feed character found.\n    Default true.\n\n- **-r**, **--regex-sep**\n\n    Treat separator option as a regex pattern.  Next example specifies a\n    space character just before `(` as a separator.\n\n        gem list | ansicolumn -trs ' (?=\\()'\n\n- **--border-style**=_style_, **--bs**=...\n\n    Set the border style.  Current default style is `box`, which enclose\n    each pane with box drawing graphic characters.  Special style\n    `random` choose random style.\n\n    Sample styles:\n    none,\n    space,\n    vbar, heavy-vbar, fat-vbar,\n    line, heavy-line,\n    hline, heavy-hline,\n    bottom-line, heavy-bottom-line,\n    stick, heavy-stick,\n    ascii-frame,\n    ascii-box,\n    c-box,\n    box, heavy-box, fat-box, very-fat-box,\n    dash-box, heavy-dash-box, fat-dash-box,\n    round-box,\n    inner-box, outer-box,\n    frame, heavy-frame, fat-frame, very-fat-frame,\n    ladder, heavy-ladder,\n    dash-frame, heavy-dash-frame, fat-dash-frame,\n    page-frame, heavy-page-frame,\n    zebra-frame,\n    checker-box, checker-frame,\n    shadow, shin-shadow,\n    shadow-box, shin-shadow-box, heavy-shadow-box,\n    comb, heavy-comb,\n    rake, heavy-rake,\n    mesh, heavy-mesh,\n    dumbbell, heavy-dumbbell,\n    ribbon, heavy-ribbon,\n    round-ribbon,\n    double-ribbon,\n    corner, crop, paren,\n    etc.\n\n    These are experimental and subject to change, and this document is not\n    always up-to-date.  See \\`perldoc -m App::ansicolumn::Border\\` for\n    actual data.\n\n    You can define your own style in module or startup file.  Put next\n    lines in your `$HOME/.ansicolumnrc` file, for example.\n\n        option default --border-style myheart\n        __PERL__\n        App::ansicolumn::Border-\u003eadd_style(\n            myheart  =\u003e {\n            left   =\u003e [ \"\\N{WHITE HEART SUIT} \", \"\\N{BLACK HEART SUIT} \" ],\n            center =\u003e [ \"\\N{WHITE HEART SUIT} \", \"\\N{BLACK HEART SUIT} \" ],\n            right  =\u003e [ \"\\N{WHITE HEART SUIT}\" , \"\\N{BLACK HEART SUIT}\"  ],\n        },\n        );\n\n- **--**\\[**no-**\\]**ignore-space**, **--**\\[**no-**\\]**is**\n\n    When used `-t` option, leading spaces are ignored by default.  Use\n    `--no-ignore-space` option to disable it.\n\n- **--**\\[**no-**\\]**white-space**\n\n    Allow white spaces at the top of each pane, or clean them up.  Default\n    true.  Negated by `--document` option.\n\n- **--**\\[**no-**\\]**isolation**\n\n    Allow the first line of a paragraph (continuous non-space lines) is\n    placed at the bottom of a pane.  Default true.  If false, move it to\n    the top of next pane.  Negated by `--document` option.\n\n- **--tabstop**=# (DEFAULT: 8)\n\n    Set tab width.\n\n- **--tabhead**=#\n- **--tabspace**=#\n\n    Set head and following space characters.  Both are space by default.\n    If the option value is longer than single character, it is evaluated\n    as unicode name.\n\n- **--tabstyle**, **--ts**\n- **--tabstyle**=_style_, **--ts**=...\n- **--tabstyle**=_head-style_,_space-style_ **--ts**=...\n\n    Set the style how tab is expanded.  Select `symbol` or `shade` for\n    example.  If two style names are combined, like\n    `squat-arrow,middle-dot`, use `squat-arrow` for tabhead and\n    `middle-dot` for tabspace.\n\n    Show available style list if called without parameter.  Styles are\n    defined in [Text::ANSI::Fold](https://metacpan.org/pod/Text%3A%3AANSI%3A%3AFold) library.\n\n- **--ambiguous**=`wide`|`narrow` (DEFAULT: `narrow`)\n\n    Specifies how to treat Unicode ambiguous width characters.  Take a\n    value of 'narrow' or 'wide.  Default is 'narrow'.\n\n- **--pages**\n\n    Split file content by formfeed character, and treat each part as a\n    individual file.  Use with `--parallel` option.\n\n# DEFAULT ALISES\n\nThe following options are defined in `App::ansicolumn::default.pm`.\n\n- **--board-color** _fg-color_ _bg-color_\n\n    This option is defined as follows:\n\n        option --board-color \\\n               --bs=inner-box \\\n               --cm=BORDER=$\u003c2\u003e,TEXT=$\u003cshift\u003e/$\u003cshift\u003e\n\n    The resulting text is displayed in an _fg-color_ font on an\n    _bg-color_ panel.\n\n- **--white-board**\n- **--black-board**\n- **--green-board**\n- **--slate-board**\n\n    Use the `--board-color` option to display text on the white, black,\n    green or darkslate panels.\n\n# CALCULATION\n\nAs for `--height`, `--width`, `--pane`, `--up` and `--pane-width`\noptions, besides giving numeric digits, you can calculate the number\nusing terminal size.  If the expression contains non-digit character,\nit is evaluated as an RPN (Reverse Polish Notation) with the terminal\nsize pushed on the stack.  Initial value for `--height` options is\nterminal height, and terminal width for others.\n\n    OPTION              VALUE\n    =================   =========================\n    --height 1-         height - 1\n    --height 2/         height / 2\n    --height 1-2/       (height - 1) / 2\n    --height dup2%-2/   (height - height % 2) / 2\n\nSpace and comma characters are ignored in the expression.  So `1-2/`\nand `1 - 2 /` and `1,-,2,/` are all same.  See \\`perldoc\nMath::RPN\\` for the expression detail.\n\nNext example select number of panes by dividing terminal width by 85:\n\n    ansicolumn --pane 85/\n\nIf you consider the case the terminal width is less than 85:\n\n    ansicolumn --pane 85/,DUP,1,GE,EXCH,1,IF\n\nThis RPN means `$height/85 \u003e= 1 ? $height/85 : 1`.\n\n# STARTUP\n\nThis command is implemented with [Getopt::EX](https://metacpan.org/pod/Getopt%3A%3AEX) module.  So\n\n    ~/.ansicolumnrc\n\nfile is read at start up time.  If you want use `--no-white-space`\nalways, put this line in your `~/.ansicolumnrc`.\n\n    option default --no-white-space\n\nAlso command can be extended by original modules with `-M`\noption. See \\`perldoc Getopt::EX\\` for detail.\n\n# INSTALL\n\n## CPANMINUS\n\n    $ cpanm App::ansicolumn\n\nTo get the latest code, use this:\n\n    $ cpanm https://github.com/tecolicom/App-ansicolumn.git\n\n# EXAMPLES\n\n[https://github.com/tecolicom/App-ansicolumn/tree/master/images](https://github.com/tecolicom/App-ansicolumn/tree/master/images)\n\n# SEE ALSO\n\n[https://github.com/tecolicom/ANSI-Tools](https://github.com/tecolicom/ANSI-Tools)\n\n[column(1)](http://man.he.net/man1/column),\n[https://man7.org/linux/man-pages/man1/column.1.html](https://man7.org/linux/man-pages/man1/column.1.html)\n\n[App::ansicolumn](https://metacpan.org/pod/App%3A%3Aansicolumn),\n[https://github.com/tecolicom/App-ansicolumn](https://github.com/tecolicom/App-ansicolumn)\n\n[Text::ANSI::Printf](https://metacpan.org/pod/Text%3A%3AANSI%3A%3APrintf),\n[https://github.com/tecolicom/Text-ANSI-Printf](https://github.com/tecolicom/Text-ANSI-Printf)\n\n## Articles (in Japanese)\n\n- [https://qiita.com/kaz-utashiro/items/345cd9abcd8e1f0d81a2](https://qiita.com/kaz-utashiro/items/345cd9abcd8e1f0d81a2)\n- [https://qiita.com/kaz-utashiro/items/1cdd71d44eb11f3fb36e](https://qiita.com/kaz-utashiro/items/1cdd71d44eb11f3fb36e)\n- [https://qiita.com/kaz-utashiro/items/32e1c2d4c42a80c42422](https://qiita.com/kaz-utashiro/items/32e1c2d4c42a80c42422)\n- [https://qiita.com/kaz-utashiro/items/a347628da09638e633ed](https://qiita.com/kaz-utashiro/items/a347628da09638e633ed)\n\n# RELATED WORKS\n\n[https://github.com/LukeSavefrogs/column\\_ansi](https://github.com/LukeSavefrogs/column_ansi)\n\n# AUTHOR\n\nKazumasa Utashiro\n\n# LICENSE\n\nCopyright © 2020-2025 Kazumasa Utashiro.\n\nThis library is free software; you can redistribute it and/or modify\nit under the same terms as Perl itself.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftecolicom%2Fapp-ansicolumn","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftecolicom%2Fapp-ansicolumn","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftecolicom%2Fapp-ansicolumn/lists"}