長い出力を2列に分割する


20

スクリプトの1つからの出力を列に並べる簡単なユーティリティまたはスクリプトはありますか?私は何らかの形でデータを持っています:

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

ただし、これが2倍になった場合は、次の形式でデータを記述します(依然として垂直に並べられている場合)。

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

マンページを読んだことから、これがcolumn適切だとは思いませんが、よくわかりません。フォームに分割するのは簡単です:

A B 
C D 
E F

\n2行ごとに印刷するだけです(現在のスクリプトの機能)。何か案は?ありがとう!

回答:


16

実際に試しました 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

やってみた しかし間違っています(-t)... But for yours to work reliably you probably need --columns`を使用)
Hauke Laging

試してみましたが、何らかの理由で、それがターミナルウィンドウの幅に依存していることに気づきませんでした(今は明らかです)。
ヘマー

また、2台のマシンで一度にこれをテストしていました。どうやら古いバージョン(Scientific Linuxでは1993年頃)は、新しい2004年のバージョンとは異なる動作をしているようです...
Hemmer

11

出力を列に並べるには、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
...

大きな(長い)ファイルでは適切に動作しません。
1回

2

ファイルを2つに分割して(同じ行数で、または最初のファイルにもう1行追加して)、次の操作を実行できます。

paste file1 file2

行の長さがあまりにも異なる場合は、printfを使用して、スペースを埋めて長さを調整する必要があります。


または... | paste - - 「長い出力を分割する」
...-don_crissti

1

プレーンを使用できますcolumns

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

注:このcolumnsコマンドはautogen、Fedora 14システムのパッケージの一部です。

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

参照資料


columns: command not foundautogen
ジル 'SO-悪であるのをやめる'

@Gilles-はい、それはの一部ですautogen。私のFedora 14システムをチェックしたところです。私も答えでそれを言及します。
slm
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.