diff options
author | Karel Zak | 2017-11-13 14:17:23 +0100 |
---|---|---|
committer | Karel Zak | 2017-11-13 14:17:23 +0100 |
commit | b5de9e6942e62d2713b7667af8b46a471a29b43a (patch) | |
tree | 194e69673b648c72effe6af05f85abb983b4e41b /text-utils | |
parent | column: add --table-noheadings (diff) | |
download | kernel-qcow2-util-linux-b5de9e6942e62d2713b7667af8b46a471a29b43a.tar.gz kernel-qcow2-util-linux-b5de9e6942e62d2713b7667af8b46a471a29b43a.tar.xz kernel-qcow2-util-linux-b5de9e6942e62d2713b7667af8b46a471a29b43a.zip |
column: allow to hide unnamed columns
Addresses: https://github.com/karelzak/util-linux/pull/327
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'text-utils')
-rw-r--r-- | text-utils/column.1 | 10 | ||||
-rw-r--r-- | text-utils/column.c | 27 |
2 files changed, 35 insertions, 2 deletions
diff --git a/text-utils/column.1 b/text-utils/column.1 index 3bcd0f086..2bc47edde 100644 --- a/text-utils/column.1 +++ b/text-utils/column.1 @@ -100,7 +100,8 @@ Print header line for each page. Specify columns where is possible to use multi-line cell for long text when necessary. .IP "\fB\-H, \-\-table-hide\fP \fIcolumns\fP" -Don't print specified columns. +Don't print specified columns. The special placeholder '-' maybe be used to +hide all unnamed columns (see --table-columns). .IP "\fB\-O, \-\-table-order\fP \fIcolumns\fP" Specify columns order on output. .IP "\fB\-n, \-\-table-name\fP \fIname\fP" @@ -128,6 +129,13 @@ Print fstab with header line and align number to the right: \fBsed 's/#.*//' /etc/fstab | column --table --table-columns SOURCE,TARGET,TYPE,OPTIONS,PASS,FREQ --table-right PASS,FREQ\fR .EE .PP +Print fstab and hide unnamed columns: +.EX +\fBsed 's/#.*//' /etc/fstab | column --table --table-columns SOURCE,TARGET,TYPE --table-hide -\fR +.EE +.PP + +.PP Print a tree: .EX \fBecho -e '1 0 A\\n2 1 AA\\n3 1 AB\\n4 2 AAA\\n5 2 AAB' | column --tree-id 1 --tree-parent 2 --tree 3\fR diff --git a/text-utils/column.c b/text-utils/column.c index 0a17c69cb..ad6c2b20e 100644 --- a/text-utils/column.c +++ b/text-utils/column.c @@ -276,13 +276,38 @@ static void apply_columnflag_from_list(struct column_control *ctl, const char *l { char **all = split_or_error(list, errmsg); char **one; + int unnamed = 0; STRV_FOREACH(one, all) { - struct libscols_column *cl = string_to_column(ctl, *one); + struct libscols_column *cl; + + if (flag == SCOLS_FL_HIDDEN && strcmp(*one, "-") == 0) { + unnamed = 1; + continue; + } + cl = string_to_column(ctl, *one); if (cl) column_set_flag(cl, flag); } strv_free(all); + + /* apply flag to all columns without name */ + if (unnamed) { + struct libscols_iter *itr; + struct libscols_column *cl; + + itr = scols_new_iter(SCOLS_ITER_FORWARD); + if (!itr) + err_oom(); + + while (scols_table_next_column(ctl->tab, itr, &cl) == 0) { + struct libscols_cell *ce = scols_column_get_header(cl); + + if (ce == NULL || scols_cell_get_data(ce) == NULL) + column_set_flag(cl, flag); + } + scols_free_iter(itr); + } } static void reorder_table(struct column_control *ctl) |