#command-line #sorting #regex #filter #key #data #specify

bin+lib aki-resort

sort lines of text. You can use regex to specify the KEY.

26 releases

0.1.25 Jun 19, 2024
0.1.24 Jan 17, 2023
0.1.22 Jun 18, 2022
0.1.20 Dec 18, 2021
0.1.8 Mar 22, 2021

#119 in Text processing


Used in aki-txpr-macro

MIT/Apache

71KB
1.5K SLoC

aki-resort

crate Docs Rust Version Apache2/MIT licensed Test ubu Test mac Test win

sort lines of text. You can use regex to specify the KEY.

Features

  • sort lines of text. You can use regex to specify the KEY.
  • minimum support rustc 1.58.1 (db9d1b20b 2022-01-20)

Command help

aki-resort --help
Usage:
  aki-resort [options]

sort lines of text.

Ordering options:
  -r, --reverse                 reverse the result of comparisons
      --according-to <word>     sort according to <word>
  -h, --head <num>              unsort the first <num> lines.
  -t, --tail <num>              unsort the last <num> lines.

Other options:
      --color <when>            use markers to highlight the matching strings
  -e, --exp <exp>               regular expression. sort by the entires match
  -u, --unique                  output only the first line of an equal
      --max-buffer <size>       max buffer size

  -H, --help        display this help and exit
  -V, --version     display version information and exit

Option Parameters:
  <word>    'month', 'numeric', 'string', 'time', 'version'
  <when>    'always', 'never', or 'auto'
  <exp>     regular expression, sort by the entires match.
  <size>    if a reading size is more than <size>, then it is not output,
            quit and display error message.

Environments:
  AKI_RESORT_COLOR_SEQ_ST   color start sequence specified by ansi
  AKI_RESORT_COLOR_SEQ_ED   color end sequence specified by ansi

Examples:
  This sort via utf-8 code:
    cat file1.txt | aki-resort
  This sort via 1st chunk of numeric character according to numeric:
    cat file1.txt | aki-resort -e "[0-9]+" --according-to numeric
  This sort via 1st chunk of numeric character according to month:
    cat file1.txt | aki-resort -e ":([^:]+)$" --according-to month
  This sort via 1st chunk of numeric version character according to version:
    cat file1.txt | aki-resort -e "[^:]+:[^:]+:([0-9.]+):" --according-to version
  This sort via 1st chunk of numeric time character according to time:
    cat file1.txt | aki-resort -e "([0-9]+:([0-9]+:)?[0-9]+(.[0-9]+)?)" --according-to time

Quick install

  1. you can install this into cargo bin path:
cargo install aki-resort
  1. you can build debian package:
cargo deb

and install .deb into your local repository of debian package.

Examples

The input data used in this example looks like this:

cat fixtures/fruit.txt

result output:

Apple:33:3.3:good:Mar
Orange:222:1.1.2:good:Jan
Cherry:4:4:good:Oct
Kiwi:1111:1.1.11:good:Jun

Example 1: simple sort

This sort via utf-8 code.

command line:

cat fixtures/fruit.txt | aki-resort

result output:

Apple:33:3.3:good:Mar
Cherry:4:4:good:Oct
Kiwi:1111:1.1.11:good:Jun
Orange:222:1.1.2:good:Jan

Example 2: numeric sort

This sort via 1st chunk of numeric character according to numeric.

command line:

cat fixtures/fruit.txt | aki-resort -e "[0-9]+" --according-to numeric

result output:

Cherry:4:4:good:Oct
Apple:33:3.3:good:Mar
Orange:222:1.1.2:good:Jan
Kiwi:1111:1.1.11:good:Jun

Example 3: version sort

This sort via 1st capture of version character according to version.

command line:

cat fixtures/fruit.txt | aki-resort -e "^[^:]+:[^:]+:([^:]+)" --according-to version

result output:

Orange:222:1.1.2:good:Jan
Kiwi:1111:1.1.11:good:Jun
Apple:33:3.3:good:Mar
Cherry:4:4:good:Oct

Example 4: month sort

This sort via 1st capture of month character according to month.

command line:

cat fixtures/fruit.txt | aki-resort -e ":([^:]+)$" --according-to month

result output:

Orange:222:1.1.2:good:Jan
Apple:33:3.3:good:Mar
Kiwi:1111:1.1.11:good:Jun
Cherry:4:4:good:Oct

Example 5: time sort

This sort via 1st capture of numeric time character according to time.

command line:

cat fixtures/fruit.txt | aki-resort -e "([0-9]+:([0-9]+:)?[0-9]+(.[0-9]+)?)" --according-to time

result output:

Cherry:4:4:good:Oct
Apple:33:3.3:good:Mar
Orange:222:1.1.2:good:Jan
Kiwi:1111:1.1.11:good:Jun

Example 6: numeric sort with the header

This sort via 1st chunk of numeric character according to numeric. And the 1st line is the fixed header.

command line:

cat fixtures/fruit_header.txt | aki-resort -e "[0-9]+" --according-to numeric -h 1

result output:

name:number:version:nice:month
Cherry:4:4:good:Oct
Apple:33:3.3:good:Mar
Orange:222:1.1.2:good:Jan
Kiwi:1111:1.1.11:good:Jun

Library example

See fn execute() for this library examples.

Changelogs

This crate's changelog here.

License

This project is licensed under either of

at your option.

Dependencies

~4.5–6MB
~108K SLoC