diff --git a/README.md b/README.md index 20ec56e..0295772 100644 --- a/README.md +++ b/README.md @@ -23,44 +23,46 @@ Usage: tablizer [regex,...] [file, ...] [flags] Operational Flags: - -c, --columns string Only show the speficied columns (separated by ,) - -v, --invert-match select non-matching rows - -n, --numbering Enable header numbering - -N, --no-color Disable pattern highlighting - -H, --no-headers Disable headers display - -s, --separator string Custom field separator - -k, --sort-by int|name Sort by column (default: 1) - -z, --fuzzy Use fuzzy search [experimental] - -F, --filter field[!]=reg Filter given field with regex, can be used multiple times - -T, --transpose-columns string Transpose the speficied columns (separated by ,) - -R, --regex-transposer /from/to/ Apply /search/replace/ regexp to fields given in -T - -I, --interactive Interactively filter and select rows + -c, --columns string Only show the speficied columns (separated by ,) + -v, --invert-match select non-matching rows + -n, --numbering Enable header numbering + -N, --no-color Disable pattern highlighting + -H, --no-headers Disable headers display + -s, --separator Custom field separator + -k, --sort-by Sort by column (default: 1) + -z, --fuzzy Use fuzzy search [experimental] + -F, --filter Filter given field with regex, can be used multiple times + -T, --transpose-columns string Transpose the speficied columns (separated by ,) + -R, --regex-transposer Apply /search/replace/ regexp to fields given in -T + -I, --interactive Interactively filter and select rows Output Flags (mutually exclusive): - -X, --extended Enable extended output - -M, --markdown Enable markdown table output - -O, --orgtbl Enable org-mode table output - -S, --shell Enable shell evaluable output - -Y, --yaml Enable yaml output - -C, --csv Enable CSV output - -A, --ascii Default output mode, ascii tabular - -L, --hightlight-lines Use alternating background colors for tables - -y, --yank-columns Yank specified columns (separated by ,) to clipboard, - space separated + -X, --extended Enable extended output + -M, --markdown Enable markdown table output + -O, --orgtbl Enable org-mode table output + -S, --shell Enable shell evaluable output + -Y, --yaml Enable yaml output + -C, --csv Enable CSV output + -A, --ascii Default output mode, ascii tabular + -L, --hightlight-lines Use alternating background colors for tables + -y, --yank-columns Yank specified columns (separated by ,) to clipboard, + space separated + --ofs Output field separator, used by -A and -C. Sort Mode Flags (mutually exclusive): - -a, --sort-age sort according to age (duration) string - -D, --sort-desc Sort in descending order (default: ascending) - -i, --sort-numeric sort according to string numerical value - -t, --sort-time sort according to time string + -a, --sort-age sort according to age (duration) string + -D, --sort-desc Sort in descending order (default: ascending) + -i, --sort-numeric sort according to string numerical value + -t, --sort-time sort according to time string Other Flags: - --completion Generate the autocompletion script for - -f, --config Configuration file (default: ~/.config/tablizer/config) - -d, --debug Enable debugging - -h, --help help for tablizer - -m, --man Display manual page - -V, --version Print program version + -r --read-file Use as input instead of STDIN + --completion Generate the autocompletion script for + -f, --config Configuration file (default: ~/.config/tablizer/config) + -d, --debug Enable debugging + -h, --help help for tablizer + -m, --man Display manual page + -V, --version Print program version ``` Let's take this output: @@ -77,13 +79,13 @@ to do this with tablizer: ``` % kubectl get pods | tablizer -NAME(1) READY(2) STATUS(3) RESTARTS(4) AGE(5) +NAME READY STATUS RESTARTS AGE repldepl-7bcd8d5b64-7zq4l 1/1 Running 1 (69m ago) 5h26m repldepl-7bcd8d5b64-m48n8 1/1 Running 1 (69m ago) 5h26m repldepl-7bcd8d5b64-q2bf4 1/1 Running 1 (69m ago) 5h26m % kubectl get pods | tablizer -c 1,3 -NAME(1) STATUS(3) +NAME STATUS repldepl-7bcd8d5b64-7zq4l Running repldepl-7bcd8d5b64-m48n8 Running repldepl-7bcd8d5b64-q2bf4 Running @@ -121,14 +123,14 @@ You can also specify a regex pattern to reduce the output: ``` % kubectl get pods | tablizer q2bf4 -NAME(1) READY(2) STATUS(3) RESTARTS(4) AGE(5) +NAME READY STATUS RESTARTS AGE repldepl-7bcd8d5b64-q2bf4 1/1 Running 1 (69m ago) 5h26m ``` Sometimes a filter regex is to broad and you wish to filter only on a particular column. This is possible using `-F`: ``` -% kubectl get pods | tablizer -n -Fname=2 +% kubectl get pods | tablizer -Fname=2 NAME READY STATUS RESTARTS AGE repldepl-7bcd8d5b64-q2bf4 1/1 Running 1 (69m ago) 5h26m ``` @@ -142,7 +144,7 @@ You can also use it to modify certain cells using regular expression matching. For example: ```shell -kubectl get pods | tablizer -n -T4 -R '/ /-/' +kubectl get pods | tablizer -T4 -R '/ /-/' NAME READY STATUS RESTARTS AGE repldepl-7bcd8d5b64-7zq4l 1/1 Running 1-(69m-ago) 5h26m repldepl-7bcd8d5b64-m48n8 1/1 Running 1-(69m-ago) 5h26m @@ -153,6 +155,11 @@ Here, we modified the 4th column (`-T4`) by replacing every space with a dash. If you need to work with `/` characters, you can also use any other separator, for instance: `-R '| |-|'`. +There's also an interactive mode, invoked with the option B<-I>, where +you can interactively filter and select rows: + +interactive + ## Installation diff --git a/cfg/config.go b/cfg/config.go index 1c3445d..77c215d 100644 --- a/cfg/config.go +++ b/cfg/config.go @@ -28,7 +28,7 @@ import ( ) const DefaultSeparator string = `(\s\s+|\t)` -const Version string = "v1.5.4" +const Version string = "v1.5.5" const MAXPARTS = 2 var DefaultConfigfile = os.Getenv("HOME") + "/.config/tablizer/config" @@ -112,6 +112,8 @@ type Config struct { // -r InputFile string + + OFS string } // maps outputmode short flags to output mode, ie. -O => -o orgtbl diff --git a/cmd/root.go b/cmd/root.go index e3bf795..83a0078 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -132,6 +132,8 @@ func Execute() { "Transpose the speficied columns (separated by ,)") rootCmd.PersistentFlags().BoolVarP(&conf.Interactive, "interactive", "I", false, "interactive mode (experimental)") + rootCmd.PersistentFlags().StringVarP(&conf.OFS, "ofs", "", "", + "Output field separator (' ' for ascii table, ',' for CSV)") // sort options rootCmd.PersistentFlags().StringVarP(&conf.SortByColumn, "sort-by", "k", "", diff --git a/cmd/tablizer.go b/cmd/tablizer.go index 6454c42..fc45d5a 100644 --- a/cmd/tablizer.go +++ b/cmd/tablizer.go @@ -9,45 +9,46 @@ SYNOPSIS tablizer [regex,...] [-r file] [flags] Operational Flags: - -c, --columns string Only show the speficied columns (separated by ,) - -v, --invert-match select non-matching rows - -n, --numbering Enable header numbering - -N, --no-color Disable pattern highlighting - -H, --no-headers Disable headers display - -s, --separator string Custom field separator - -k, --sort-by int|name Sort by column (default: 1) - -z, --fuzzy Use fuzzy search [experimental] - -F, --filter field[!]=reg Filter given field with regex, can be used multiple times - -T, --transpose-columns string Transpose the speficied columns (separated by ,) - -R, --regex-transposer /from/to/ Apply /search/replace/ regexp to fields given in -T - -I, --interactive Interactively filter and select rows + -c, --columns string Only show the speficied columns (separated by ,) + -v, --invert-match select non-matching rows + -n, --numbering Enable header numbering + -N, --no-color Disable pattern highlighting + -H, --no-headers Disable headers display + -s, --separator Custom field separator + -k, --sort-by Sort by column (default: 1) + -z, --fuzzy Use fuzzy search [experimental] + -F, --filter Filter given field with regex, can be used multiple times + -T, --transpose-columns string Transpose the speficied columns (separated by ,) + -R, --regex-transposer Apply /search/replace/ regexp to fields given in -T + -I, --interactive Interactively filter and select rows Output Flags (mutually exclusive): - -X, --extended Enable extended output - -M, --markdown Enable markdown table output - -O, --orgtbl Enable org-mode table output - -S, --shell Enable shell evaluable output - -Y, --yaml Enable yaml output - -C, --csv Enable CSV output - -A, --ascii Default output mode, ascii tabular - -L, --hightlight-lines Use alternating background colors for tables - -y, --yank-columns Yank specified columns (separated by ,) to clipboard, - space separated + -X, --extended Enable extended output + -M, --markdown Enable markdown table output + -O, --orgtbl Enable org-mode table output + -S, --shell Enable shell evaluable output + -Y, --yaml Enable yaml output + -C, --csv Enable CSV output + -A, --ascii Default output mode, ascii tabular + -L, --hightlight-lines Use alternating background colors for tables + -y, --yank-columns Yank specified columns (separated by ,) to clipboard, + space separated + --ofs Output field separator, used by -A and -C. Sort Mode Flags (mutually exclusive): - -a, --sort-age sort according to age (duration) string - -D, --sort-desc Sort in descending order (default: ascending) - -i, --sort-numeric sort according to string numerical value - -t, --sort-time sort according to time string + -a, --sort-age sort according to age (duration) string + -D, --sort-desc Sort in descending order (default: ascending) + -i, --sort-numeric sort according to string numerical value + -t, --sort-time sort according to time string Other Flags: - -r --read-file Use as input instead of STDIN - --completion Generate the autocompletion script for - -f, --config Configuration file (default: ~/.config/tablizer/config) - -d, --debug Enable debugging - -h, --help help for tablizer - -m, --man Display manual page - -V, --version Print program version + -r --read-file Use as input instead of STDIN + --completion Generate the autocompletion script for + -f, --config Configuration file (default: ~/.config/tablizer/config) + -d, --debug Enable debugging + -h, --help help for tablizer + -m, --man Display manual page + -V, --version Print program version DESCRIPTION Many programs generate tabular output. But sometimes you need to @@ -75,16 +76,16 @@ DESCRIPTION kubectl get pods | tablizer # read a file - tablizer filename + tablizer -r filename # search for pattern in a file (works like grep) - tablizer regex filename + tablizer regex -r filename # search for pattern in STDIN kubectl get pods | tablizer regex - The output looks like the original one but every header field will have - a numer associated with it, e.g.: + The output looks like the original one. You can add the option -n, then + every header field will have a numer associated with it, e.g.: NAME(1) READY(2) STATUS(3) RESTARTS(4) AGE(5) @@ -96,7 +97,13 @@ DESCRIPTION You can specify the numbers in any order but output will always follow the original order. - The numbering can be suppressed by using the -n option. + However, you may also just use the header names instead of numbers, eg: + + kubectl get pods | tablizer -cname,status + + You can also use regular expressions with -c, eg: + + kubectl get pods | tablizer -c '[ae]' By default tablizer shows a header containing the names of each column. This can be disabled using the -H option. Be aware that this only @@ -445,45 +452,46 @@ Usage: tablizer [regex,...] [-r file] [flags] Operational Flags: - -c, --columns string Only show the speficied columns (separated by ,) - -v, --invert-match select non-matching rows - -n, --numbering Enable header numbering - -N, --no-color Disable pattern highlighting - -H, --no-headers Disable headers display - -s, --separator string Custom field separator - -k, --sort-by int|name Sort by column (default: 1) - -z, --fuzzy Use fuzzy search [experimental] - -F, --filter field[!]=reg Filter given field with regex, can be used multiple times - -T, --transpose-columns string Transpose the speficied columns (separated by ,) - -R, --regex-transposer /from/to/ Apply /search/replace/ regexp to fields given in -T - -I, --interactive Interactively filter and select rows + -c, --columns string Only show the speficied columns (separated by ,) + -v, --invert-match select non-matching rows + -n, --numbering Enable header numbering + -N, --no-color Disable pattern highlighting + -H, --no-headers Disable headers display + -s, --separator Custom field separator + -k, --sort-by Sort by column (default: 1) + -z, --fuzzy Use fuzzy search [experimental] + -F, --filter Filter given field with regex, can be used multiple times + -T, --transpose-columns string Transpose the speficied columns (separated by ,) + -R, --regex-transposer Apply /search/replace/ regexp to fields given in -T + -I, --interactive Interactively filter and select rows Output Flags (mutually exclusive): - -X, --extended Enable extended output - -M, --markdown Enable markdown table output - -O, --orgtbl Enable org-mode table output - -S, --shell Enable shell evaluable output - -Y, --yaml Enable yaml output - -C, --csv Enable CSV output - -A, --ascii Default output mode, ascii tabular - -L, --hightlight-lines Use alternating background colors for tables - -y, --yank-columns Yank specified columns (separated by ,) to clipboard, - space separated + -X, --extended Enable extended output + -M, --markdown Enable markdown table output + -O, --orgtbl Enable org-mode table output + -S, --shell Enable shell evaluable output + -Y, --yaml Enable yaml output + -C, --csv Enable CSV output + -A, --ascii Default output mode, ascii tabular + -L, --hightlight-lines Use alternating background colors for tables + -y, --yank-columns Yank specified columns (separated by ,) to clipboard, + space separated + --ofs Output field separator, used by -A and -C. Sort Mode Flags (mutually exclusive): - -a, --sort-age sort according to age (duration) string - -D, --sort-desc Sort in descending order (default: ascending) - -i, --sort-numeric sort according to string numerical value - -t, --sort-time sort according to time string + -a, --sort-age sort according to age (duration) string + -D, --sort-desc Sort in descending order (default: ascending) + -i, --sort-numeric sort according to string numerical value + -t, --sort-time sort according to time string Other Flags: - -r --read-file Use as input instead of STDIN - --completion Generate the autocompletion script for - -f, --config Configuration file (default: ~/.config/tablizer/config) - -d, --debug Enable debugging - -h, --help help for tablizer - -m, --man Display manual page - -V, --version Print program version + -r --read-file Use as input instead of STDIN + --completion Generate the autocompletion script for + -f, --config Configuration file (default: ~/.config/tablizer/config) + -d, --debug Enable debugging + -h, --help help for tablizer + -m, --man Display manual page + -V, --version Print program version ` diff --git a/lib/printer.go b/lib/printer.go index 42c17c6..27a4f81 100644 --- a/lib/printer.go +++ b/lib/printer.go @@ -62,7 +62,7 @@ func printData(writer io.Writer, conf cfg.Config, data *Tabdata) { case cfg.Yaml: printYamlData(writer, data) case cfg.CSV: - printCSVData(writer, data) + printCSVData(writer, conf, data) default: printASCIIData(writer, conf, data) } @@ -194,6 +194,11 @@ func printMarkdownData(writer io.Writer, conf cfg.Config, data *Tabdata) { Simple ASCII table without any borders etc, just like the input we expect */ func printASCIIData(writer io.Writer, conf cfg.Config, data *Tabdata) { + OFS := " " + if conf.OFS != "" { + OFS = conf.OFS + } + tableString := &strings.Builder{} styleTSV := tw.NewSymbolCustom("space").WithColumn("\t") @@ -213,14 +218,14 @@ func printASCIIData(writer io.Writer, conf cfg.Config, data *Tabdata) { Formatting: tw.CellFormatting{ AutoFormat: tw.Off, }, - Padding: tw.CellPadding{Global: tw.Padding{Left: "", Right: " "}}, + Padding: tw.CellPadding{Global: tw.Padding{Left: "", Right: OFS}}, }, Row: tw.CellConfig{ Formatting: tw.CellFormatting{ AutoWrap: tw.WrapNone, Alignment: tw.AlignLeft, }, - Padding: tw.CellPadding{Global: tw.Padding{Right: " "}}, + Padding: tw.CellPadding{Global: tw.Padding{Right: OFS}}, }, Debug: true, @@ -323,8 +328,14 @@ func printYamlData(writer io.Writer, data *Tabdata) { output(writer, string(yamlstr)) } -func printCSVData(writer io.Writer, data *Tabdata) { +func printCSVData(writer io.Writer, conf cfg.Config, data *Tabdata) { + OFS := "," + if conf.OFS != "" { + OFS = conf.OFS + } + csvout := csv.NewWriter(writer) + csvout.Comma = []rune(OFS)[0] if err := csvout.Write(data.headers); err != nil { log.Fatalln("error writing record to csv:", err) diff --git a/lib/printer_test.go b/lib/printer_test.go index 7ae4bd9..4c1566e 100644 --- a/lib/printer_test.go +++ b/lib/printer_test.go @@ -280,6 +280,11 @@ func TestPrinter(t *testing.T) { Numbering: testdata.numberize, UseColumns: testdata.usecol, NoColor: true, + OFS: " ", + } + + if conf.OutputMode == cfg.CSV { + conf.OFS = "," } if testdata.column > 0 { @@ -304,8 +309,10 @@ func TestPrinter(t *testing.T) { if got != exp { t.Errorf("not rendered correctly:\n+++ got:\n%s\n+++ want:\n%s", - strings.ReplaceAll(got, " ", "_"), - strings.ReplaceAll(exp, " ", "_")) + got, exp, + // strings.ReplaceAll(got, " ", "_"), + // strings.ReplaceAll(exp, " ", "_") + ) } }) } diff --git a/tablizer.1 b/tablizer.1 index 7c24798..5ac9333 100644 --- a/tablizer.1 +++ b/tablizer.1 @@ -133,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "TABLIZER 1" -.TH TABLIZER 1 "2025-09-11" "1" "User Commands" +.TH TABLIZER 1 "2025-09-30" "1" "User Commands" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -147,45 +147,46 @@ tablizer \- Manipulate tabular output of other programs \& tablizer [regex,...] [\-r file] [flags] \& \& Operational Flags: -\& \-c, \-\-columns string Only show the speficied columns (separated by ,) -\& \-v, \-\-invert\-match select non\-matching rows -\& \-n, \-\-numbering Enable header numbering -\& \-N, \-\-no\-color Disable pattern highlighting -\& \-H, \-\-no\-headers Disable headers display -\& \-s, \-\-separator string Custom field separator -\& \-k, \-\-sort\-by int|name Sort by column (default: 1) -\& \-z, \-\-fuzzy Use fuzzy search [experimental] -\& \-F, \-\-filter field[!]=reg Filter given field with regex, can be used multiple times -\& \-T, \-\-transpose\-columns string Transpose the speficied columns (separated by ,) -\& \-R, \-\-regex\-transposer /from/to/ Apply /search/replace/ regexp to fields given in \-T -\& \-I, \-\-interactive Interactively filter and select rows +\& \-c, \-\-columns string Only show the speficied columns (separated by ,) +\& \-v, \-\-invert\-match select non\-matching rows +\& \-n, \-\-numbering Enable header numbering +\& \-N, \-\-no\-color Disable pattern highlighting +\& \-H, \-\-no\-headers Disable headers display +\& \-s, \-\-separator Custom field separator +\& \-k, \-\-sort\-by Sort by column (default: 1) +\& \-z, \-\-fuzzy Use fuzzy search [experimental] +\& \-F, \-\-filter Filter given field with regex, can be used multiple times +\& \-T, \-\-transpose\-columns string Transpose the speficied columns (separated by ,) +\& \-R, \-\-regex\-transposer Apply /search/replace/ regexp to fields given in \-T +\& \-I, \-\-interactive Interactively filter and select rows \& \& Output Flags (mutually exclusive): -\& \-X, \-\-extended Enable extended output -\& \-M, \-\-markdown Enable markdown table output -\& \-O, \-\-orgtbl Enable org\-mode table output -\& \-S, \-\-shell Enable shell evaluable output -\& \-Y, \-\-yaml Enable yaml output -\& \-C, \-\-csv Enable CSV output -\& \-A, \-\-ascii Default output mode, ascii tabular -\& \-L, \-\-hightlight\-lines Use alternating background colors for tables -\& \-y, \-\-yank\-columns Yank specified columns (separated by ,) to clipboard, -\& space separated +\& \-X, \-\-extended Enable extended output +\& \-M, \-\-markdown Enable markdown table output +\& \-O, \-\-orgtbl Enable org\-mode table output +\& \-S, \-\-shell Enable shell evaluable output +\& \-Y, \-\-yaml Enable yaml output +\& \-C, \-\-csv Enable CSV output +\& \-A, \-\-ascii Default output mode, ascii tabular +\& \-L, \-\-hightlight\-lines Use alternating background colors for tables +\& \-y, \-\-yank\-columns Yank specified columns (separated by ,) to clipboard, +\& space separated +\& \-\-ofs Output field separator, used by \-A and \-C. \& \& Sort Mode Flags (mutually exclusive): -\& \-a, \-\-sort\-age sort according to age (duration) string -\& \-D, \-\-sort\-desc Sort in descending order (default: ascending) -\& \-i, \-\-sort\-numeric sort according to string numerical value -\& \-t, \-\-sort\-time sort according to time string +\& \-a, \-\-sort\-age sort according to age (duration) string +\& \-D, \-\-sort\-desc Sort in descending order (default: ascending) +\& \-i, \-\-sort\-numeric sort according to string numerical value +\& \-t, \-\-sort\-time sort according to time string \& \& Other Flags: -\& \-r \-\-read\-file Use as input instead of STDIN -\& \-\-completion Generate the autocompletion script for -\& \-f, \-\-config Configuration file (default: ~/.config/tablizer/config) -\& \-d, \-\-debug Enable debugging -\& \-h, \-\-help help for tablizer -\& \-m, \-\-man Display manual page -\& \-V, \-\-version Print program version +\& \-r \-\-read\-file Use as input instead of STDIN +\& \-\-completion Generate the autocompletion script for +\& \-f, \-\-config Configuration file (default: ~/.config/tablizer/config) +\& \-d, \-\-debug Enable debugging +\& \-h, \-\-help help for tablizer +\& \-m, \-\-man Display manual page +\& \-V, \-\-version Print program version .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" @@ -217,17 +218,17 @@ pattern. Hence: \& kubectl get pods | tablizer \& \& # read a file -\& tablizer filename +\& tablizer \-r filename \& \& # search for pattern in a file (works like grep) -\& tablizer regex filename +\& tablizer regex \-r filename \& \& # search for pattern in STDIN \& kubectl get pods | tablizer regex .Ve .PP -The output looks like the original one but every header field will -have a numer associated with it, e.g.: +The output looks like the original one. You can add the option \fB\-n\fR, +then every header field will have a numer associated with it, e.g.: .PP .Vb 1 \& NAME(1) READY(2) STATUS(3) RESTARTS(4) AGE(5) @@ -243,7 +244,18 @@ columns you want to have in your output (see \s-1COLUMNS\s0: You can specify the numbers in any order but output will always follow the original order. .PP -The numbering can be suppressed by using the \fB\-n\fR option. +However, you may also just use the header names instead of numbers, +eg: +.PP +.Vb 1 +\& kubectl get pods | tablizer \-cname,status +.Ve +.PP +You can also use regular expressions with \fB\-c\fR, eg: +.PP +.Vb 1 +\& kubectl get pods | tablizer \-c \*(Aq[ae]\*(Aq +.Ve .PP By default tablizer shows a header containing the names of each column. This can be disabled using the \fB\-H\fR option. Be aware that diff --git a/tablizer.pod b/tablizer.pod index 5250703..cb6c802 100644 --- a/tablizer.pod +++ b/tablizer.pod @@ -8,45 +8,46 @@ tablizer - Manipulate tabular output of other programs tablizer [regex,...] [-r file] [flags] Operational Flags: - -c, --columns string Only show the speficied columns (separated by ,) - -v, --invert-match select non-matching rows - -n, --numbering Enable header numbering - -N, --no-color Disable pattern highlighting - -H, --no-headers Disable headers display - -s, --separator string Custom field separator - -k, --sort-by int|name Sort by column (default: 1) - -z, --fuzzy Use fuzzy search [experimental] - -F, --filter field[!]=reg Filter given field with regex, can be used multiple times - -T, --transpose-columns string Transpose the speficied columns (separated by ,) - -R, --regex-transposer /from/to/ Apply /search/replace/ regexp to fields given in -T - -I, --interactive Interactively filter and select rows + -c, --columns string Only show the speficied columns (separated by ,) + -v, --invert-match select non-matching rows + -n, --numbering Enable header numbering + -N, --no-color Disable pattern highlighting + -H, --no-headers Disable headers display + -s, --separator Custom field separator + -k, --sort-by Sort by column (default: 1) + -z, --fuzzy Use fuzzy search [experimental] + -F, --filter Filter given field with regex, can be used multiple times + -T, --transpose-columns string Transpose the speficied columns (separated by ,) + -R, --regex-transposer Apply /search/replace/ regexp to fields given in -T + -I, --interactive Interactively filter and select rows Output Flags (mutually exclusive): - -X, --extended Enable extended output - -M, --markdown Enable markdown table output - -O, --orgtbl Enable org-mode table output - -S, --shell Enable shell evaluable output - -Y, --yaml Enable yaml output - -C, --csv Enable CSV output - -A, --ascii Default output mode, ascii tabular - -L, --hightlight-lines Use alternating background colors for tables - -y, --yank-columns Yank specified columns (separated by ,) to clipboard, - space separated + -X, --extended Enable extended output + -M, --markdown Enable markdown table output + -O, --orgtbl Enable org-mode table output + -S, --shell Enable shell evaluable output + -Y, --yaml Enable yaml output + -C, --csv Enable CSV output + -A, --ascii Default output mode, ascii tabular + -L, --hightlight-lines Use alternating background colors for tables + -y, --yank-columns Yank specified columns (separated by ,) to clipboard, + space separated + --ofs Output field separator, used by -A and -C. Sort Mode Flags (mutually exclusive): - -a, --sort-age sort according to age (duration) string - -D, --sort-desc Sort in descending order (default: ascending) - -i, --sort-numeric sort according to string numerical value - -t, --sort-time sort according to time string + -a, --sort-age sort according to age (duration) string + -D, --sort-desc Sort in descending order (default: ascending) + -i, --sort-numeric sort according to string numerical value + -t, --sort-time sort according to time string Other Flags: - -r --read-file Use as input instead of STDIN - --completion Generate the autocompletion script for - -f, --config Configuration file (default: ~/.config/tablizer/config) - -d, --debug Enable debugging - -h, --help help for tablizer - -m, --man Display manual page - -V, --version Print program version + -r --read-file Use as input instead of STDIN + --completion Generate the autocompletion script for + -f, --config Configuration file (default: ~/.config/tablizer/config) + -d, --debug Enable debugging + -h, --help help for tablizer + -m, --man Display manual page + -V, --version Print program version =head1 DESCRIPTION @@ -78,16 +79,16 @@ pattern. Hence: kubectl get pods | tablizer # read a file - tablizer filename + tablizer -r filename # search for pattern in a file (works like grep) - tablizer regex filename + tablizer regex -r filename # search for pattern in STDIN kubectl get pods | tablizer regex -The output looks like the original one but every header field will -have a numer associated with it, e.g.: +The output looks like the original one. You can add the option B<-n>, +then every header field will have a numer associated with it, e.g.: NAME(1) READY(2) STATUS(3) RESTARTS(4) AGE(5) @@ -99,7 +100,14 @@ columns you want to have in your output (see L: You can specify the numbers in any order but output will always follow the original order. -The numbering can be suppressed by using the B<-n> option. +However, you may also just use the header names instead of numbers, +eg: + + kubectl get pods | tablizer -cname,status + +You can also use regular expressions with B<-c>, eg: + + kubectl get pods | tablizer -c '[ae]' By default tablizer shows a header containing the names of each column. This can be disabled using the B<-H> option. Be aware that