"column -t"를 사용하고 구분 기호를 바꾸십시오.

"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그런 옵션은 없네요

답변1

don_crissti의 답변을 보고 이를 Perl 테이블 모듈의 다양한 출력 형식과 비교하는 동안 BSD가 아닌 코드 열과 유사한 출력을 생성하도록 쉽게 확장할 수 있는 이 Perl 코드를 만들었습니다.

#!/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

답변2

columnfrom을 사용하면 util-linux다음과 같이 열 구분 기호를 지정할 수 있습니다.

   -o, --output-separator string

예를 들어

column -s ':' -o ' | ' -t /etc/passwd

다음과 같은 것을 인쇄합니다

root        | x | 0    | 0    | root      | /root           | /bin/zsh
bin         | x | 1    | 1    | bin       | /bin            | /usr/bin/nologin
daemon      | x | 2    | 2    | daemon    | /               | /usr/bin/nologin
mail        | x | 8    | 12   | mail      | /var/spool/mail | /usr/bin/nologin
whatever    | x | 14   | 11   | whatever  | /srv/stuff      | /usr/bin/nologin

답변3

sed분리기 교체용 입니다 .

sed 's/:/ | /g' /etc/passwd

답변4

너무 긴 게시물에 대해 사과드립니다.

테이블 형식화를 수행할 수 있는 Perl 모듈은 많이 있습니다. 다음은 그 중 일부를 비교한 것입니다. 데이터는 data2 파일에 있습니다. 스크립트 조각은 다음과 같습니다

# print-like-echo; print-line-with-visual-space.
pe() { for _i;do printf "%s" "$_i";done; printf "\n"; }
pl() { pe;pe "-----" ;pe "$*"; }

FILE=${1-data2}

pl " Data file $FILE:"
head $FILE

pl " Results with column:"
column -s ':' -t $FILE

pl " Results from column | sed:"
column -s ':' -t < $FILE | sed -E 's/ ([^ ])/ | \1/g'

pl " Results of sed | column:"
sed 's/:/ | /g' $FILE | column -s ':' -t

./p4 $FILE

Perl 코드는 p4 파일에 있는 Perl의 약 30줄(및 일부 주석)입니다. 일부 모듈을 설치해야 합니다.

#!/usr/bin/env perl

# @(#) p4       Demonstrate various table formatters on password file.

use strict;
use warnings;

use Text::Table::Any;

my ( $rows, @a, @my_be, $back_end );

# Data rows from passwd-format file.
while (<>) {
  chomp;
  @a = split /:/;
  push @$rows, [@a];
}

@my_be = ("Text::Table::Tiny");

# push @my_be, 'Text::Table::TinyColor';
# push @my_be, 'Text::Table::TinyColorWide';
# push @my_be, 'Text::Table::TinyWide';
push @my_be, 'Text::Table::Org';
push @my_be, 'Text::Table::CSV';

# push @my_be, 'Text::Table::HTML';
# push @my_be, 'Text::Table::HTML::DataTables';
push @my_be, 'Text::Table::Paragraph';

# push @my_be, 'Text::ANSITable';
push @my_be, 'Text::ASCIITable';
push @my_be, 'Text::FormatTable';

# push @my_be, 'Text::MarkdownTable';
push @my_be, 'Text::Table';
push @my_be, 'Text::TabularDisplay';

# push @my_be, 'Text::TestForError';

foreach $back_end (@my_be) {
  print "\n\n----\n";
  print " Backend table processor = $back_end\n";
  print "\n";
  print Text::Table::Any::table(
    rows       => $rows,
    header_row => 1,
    backend    => $back_end,

  );
}

./s1 data2 실행 결과는 다음과 같습니다.

-----
 Data file 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

-----
 Results with column:
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

-----
 Results from column | sed:
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

-----
 Results of sed | column:
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


----
 Backend table processor = Text::Table::Tiny

+-----------+----------+-----+-----+-------------+------------------+-------------------+
| 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    |
+-----------+----------+-----+-----+-------------+------------------+-------------------+


----
 Backend table processor = Text::Table::Org

| 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    |


----
 Backend table processor = Text::Table::CSV

"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"


----
 Backend table processor = Text::Table::Paragraph

login: daemon
password: x
UID: 1
GID: 1
name: daemon
home: /usr/sbin
shell: /usr/sbin/nologin

login: bin
password: x
UID: 2
GID: 2
name: bin
home: /bin
shell: /usr/sbin/nologin

login: _applepay
password: *
UID: 260
GID: 260
name: applepay
home: /var/db/applepay
shell: /usr/bin/false

login: _hidd
password: *
UID: 261
GID: 261
name: HID Service
home: /var/db/hidd
shell: /usr/bin/false



----
 Backend table processor = Text::ASCIITable

.---------------------------------------------------------------------------------------.
| 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    |
'-----------+----------+-----+-----+-------------+------------------+-------------------'


----
 Backend table processor = Text::FormatTable

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   


----
 Backend table processor = Text::Table

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   


----
 Backend table processor = Text::TabularDisplay

+-----------+----------+-----+-----+-------------+------------------+-------------------+
| 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    |
+-----------+----------+-----+-----+-------------+------------------+-------------------+

흥미로운 기능은 Text::ASCIITable 및 Text::Table 모듈이 숫자 필드를 오른쪽 정렬한다는 것입니다.

이것은 다음과 같은 시스템에 있습니다.

OS, ker|rel, machine: Linux, 3.16.0-4-amd64, x86_64
Distribution        : Debian 8.9 (jessie) 
bash GNU bash 4.3.30
perl 5.20.2

행운을 빕니다... 건배, drl

관련 정보