Text-Formatting使用
使用 column -t
並替換分隔符
我使用
column
命令來漂亮地列印表格,例如column -s ':' -t < /etc/passwd
它有效,但所有分隔符都替換為空格,例如
_applepay * 260 260 applepay Account /var/db/applepay /usr/bin/false _hidd * 261 261 HID Service User /var/db/hidd /usr/bin/false
我需要這樣的東西
_applepay | * | 260 | 260 | applepay Account | /var/db/applepay | /usr/bin/false
有任何想法嗎?
我剛剛閱讀了的手冊,
column
沒有這樣的選項
在查看來自 don_crissti 的答案並將其與 perl 表模組的各種輸出格式進行比較時,我創建了這個可擴展的 perl 程式碼,以便它產生類似於非 BSD 程式碼列的輸出:
#!/usr/bin/env perl # @(#) p5 Demonstrate framework for non-bsd util-linux:column. use strict; use warnings; use Text::FormatTable; my ($input_separator) = ":"; my ($output_separator) = " | "; my ( $rows, @a, @my_be, $back_end ); # Data rows from colon-separated data, e.g. passwd-format file. while (<>) { chomp; @a = split /$input_separator/; push @$rows, [@a]; } # Prepare and print the table. my $t = Text::FormatTable->new( join( $output_separator, ('l') x @{ $rows->[0] } ) ); $t->head( @{ $rows->[0] } ); $t->row( @{ $rows->[$_] } ) for 1 .. @$rows - 1; print $t->render; exit(0);
當使用另一個答案中提到的 data2 文件執行時,會產生:
$ ./p5 data2 login | password | UID | GID | name | home | shell daemon | x | 1 | 1 | daemon | /usr/sbin | /usr/sbin/nologin bin | x | 2 | 2 | bin | /bin | /usr/sbin/nologin _applepay | * | 260 | 260 | applepay | /var/db/applepay | /usr/bin/false _hidd | * | 261 | 261 | HID Service | /var/db/hidd | /usr/bin/false
最良好的祝愿……乾杯,drl