web-dev-qa-db-ja.com

コマンド結果を並べて印刷する

2つのコマンドの結果を並べて印刷することができます...

このようなもの

something `ls -l /a` `cat bla.txt`

結果:

total 24                                                #while [ 1 = 1 ]; do
-rw-r--r-- 1 wolfy wolfy  194 Aug 13 08:50 c.in         #       echo "bla"
-rwxr-xr-x 1 wolfy wolfy   52 Sep 24 11:48 bla.sh       #done
-rwxr-xr-x 1 wolfy wolfy   38 Sep 24 11:48 bla1.sh      echo "bla"
-rwxr-xr-x 1 wolfy wolfy  147 Sep 24 11:54 ble.sh

prはファイルでこのようなことができることを知っていますが、コマンドでこれを行う方法が見つかりませんでした...

11
Wolfy

プロセス置換 を使用できます

pr -m <(cmd1) <(cmd2)

ただし、あなたの場合、あなたは1つのコマンドと1つのファイルを持っているので:

ls -l | pr -m - bla.txt
13
geirha

次のようにscreenを使用できます。

screenタイプ Ctrl-a| 垂直および Ctrl-aS 水平分割用。

  • 次の表示領域にジャンプします。 Ctrl-aTab
  • 現在の地域を削除する: Ctrl-aX
  • 現在の領域を除くすべての領域を削除します。 Ctrl-aQ

右半分でls -l /aを開始し、左半分でcat bla.txtを開始します。

4
chaos

TL; DR

より一貫した結果を得るには、pasteではなくcolumn/prの組み合わせを使用することを検討してください。

  • OSによっては、入力の長さが異なる場合(Ubuntu、macOS)、またはさらに悪い場合は完全に異なるページに各入力が印刷される場合(列7)prが誤って列に混在します

  • pr余分な出力を先頭に追加する

フォーマット:

paste <(cmd1) <(cmd2) | column -s $'\t' -t

詳細な説明

pasteコマンドとcolumnコマンドを組み合わせることにより、非常に堅牢なソリューションを実現できます。

pasteを超えるcolumn/prアプローチの利点:

  • タイムスタンプやページヘッダー情報が追加されないため、または空行のフルスクリーンが追加されないため、出力がよりきれいになります。

  • 入力の長さが異なっていても、列は常に分離したままです

具体例:

paste <(ls -1 .) <(ls -1 ..) | column -s $'\t' -t

Ubuntu 16.04でのpaste/columnテクニックの実際の出力:

[email protected]:~/go/src/github.com/jaytaylor/html2text
$ paste <(ls -1 .) <(ls -1 ..) | column -s $'\t' -t
LICENSE            archiveify
README.md          go-hostsfile
html2text.go       html2text
html2text_test.go  jaytaylor
testdata           mockery-example
shipbuilder
stoppableListener
tesseract-web

参照: テキストファイルを列ごとに結合

比較用:さまざまなプラットフォーム上のpr

TL; DR:pr動作は、Linuxフレーバー間で一貫性がありません。

prバージョンの出力Ubuntu

[email protected]:~/go/src/github.com/jaytaylor/html2text
$ pr -m <(ls -1 .) <(ls -1 ..)


2017-05-25 15:50                    /dev/fd/62                    Page 1


LICENSE                 archiveify
README.md               go-hostsfile
html2text.go                html2text
html2text_test.go           jaytaylor
testdata                mockery-example
                    shipbuilder
                    stoppableListener
                    tesseract-web

OS X/macOsでのprバージョンの出力:

[email protected]:~/go/src/github.com/jaytaylor/html2text
$ pr -m <(ls -1 .) <(ls -1 ..)


May 25 08:55 2017  Page 1


LICENSE                 archiveify
README.md               go-hostsfile
html2text.go                html2text
html2text_test.go           jaytaylor
testdata                mockery-example
                    shipbuilder
                    stoppableListener
                    tesseract-web

<... remainder of screen filled with blank lines ...>

prバージョンの出力Centos

(驚いたことに、Centos 7でのprの動作は、テストされた他のすべてのプラットフォームの動作とは異なります)

[email protected]:~/go/src/github.com/jaytaylor/html2text
$ pr <(ls -1 .) <(ls -1 ..)


2017-05-25 15:59                    /dev/fd/63                    Page 1


LICENSE
README.md
html2text.go
html2text_test.go
testdata

<... remainder of screen filled with blank lines ...>

2017-05-25 16:21                    /dev/fd/62                    Page 1


archiveify
go-hostsfile
html2text
jaytaylor
mockery-example
shipbuilder
stoppableListener
tesseract-web

<... remainder of screen filled with blank lines ...>
3
Jay Taylor