긴 출력을 두 개의 열로 분할 lseuiorlhisnflkc B klajsdfhalsdfh

내 스크립트 중 하나의 출력을 열화하는 간단한 유틸리티 또는 스크립트가 있습니까? 어떤 형태의 데이터가 있습니다.

A aldkhasdfljhaf
B klajsdfhalsdfh
C salkjsdjkladdag
D lseuiorlhisnflkc
E sdjklfhnslkdfhn
F kjhnakjshddnaskjdh

그러나 이것이 두 개가 길어지면 데이터를 다음과 같은 형식으로 작성하십시오 (여전히 세로로 정렬 된 위치).

A aldkhasdfljhaf    D lseuiorlhisnflkc
B klajsdfhalsdfh    E sdjklfhnslkdfhn
C salkjsdjkladdag   F kjhnakjshddnaskjdh

맨 페이지를 읽었을 때 이것이 이것이 column적절한 것이라고 생각 하지는 않지만 확실하지 않습니다. 다음과 같은 형식으로 분할하기 쉽습니다.

A B
C D
E F

\n두 번째 줄마다 인쇄 합니다 (현재 스크립트가하는 일). 어떤 아이디어? 감사!



답변

실제로 시도 했습니까 column? 정확히 원하는 것 같습니다.

$ cat file
A aldkhasdfljhaf
B klajsdfhalsdfh
C salkjsdjkladdag
D lseuiorlhisnflkc
E sdjklfhnslkdfhn

$ column file
A aldkhasdfljhaf    D lseuiorlhisnflkc
B klajsdfhalsdfh    E sdjklfhnslkdfhn
C salkjsdjkladdag   F kjhnakjshddnaskjdh

답변

출력을 분류하려면 pr인쇄 할 텍스트 파일을 변환합니다.

-COLUMN, --columns=COLUMN: output COLUMN columns
      and print columns down, unless -a is used.

-t, --omit-header : omit page headers and trailers

예 :

ls /etc | pr -2 -t
abrt                                gtk-2.0
acpi                                hal
adjtime                             hba.conf
agent.properties                    host.conf
aliases                             hosts
aliases.db                          hosts.allow
...

답변

파일을 두 줄로 나눠서 (같은 줄 수 또는 첫 줄에 한 줄 더 표시) 다음과 같이하십시오.

paste file1 file2

행의 길이가 너무 다른 경우 공백으로 채워서 printf를 사용하여 길이를 조정해야 할 수도 있습니다.


답변

당신은 평범한 것을 사용할 수 있습니다 columns:

$ cat test.txt | columns
A aldkhasdfljhaf             B klajsdfhalsdfh             C salkjsdjkladdag
D lseuiorlhisnflkc           E sdjklfhnslkdfhn            F kjhnakjshddnaskjdh

참고 :columns명령은 autogenFedora 14 시스템 패키지의 일부입니다 .

$ rpm -qf /usr/bin/columns
autogen-5.9.4-7.fc12.x86_64

참고 문헌