2列の2つのファイルを並べて印刷

2列の2つのファイルを並べて印刷

2つのテキストファイルを2つの列(左側に1つ、右側に1つ)として出力したいと思います。

paste1文字だけが区切り文字で挿入されるため、問題は解決されません。したがって、最初のファイルに長さが異なる行がある場合、出力は歪みます。

$ cat file1
looooooooong line
line
$ cat file2
hello
world
$ paste file1 file2
looooooooong line   hello
line    world

末尾のスペースを追加するコマンドがあると、fmt --add-spaces --width 50問題は解決されます(1)

$ paste <(fmt --add-spaces --width 50 file1) file2
looooooooong line                                 hello
line                                              world

しかし、私はこれを行う簡単な方法がわかりません。

それでは、ファイルを水平にマージして歪みなしで標準出力に印刷するにはどうすればよいですか?

実はただ並んで置いて読んでみたかったです。


(1)修正する:たとえば、末尾のスペースを追加するコマンドがありますxargs -d '\n' printf '%-50s\n'。ただし、行数がそれより少ない場合、実行時に
$ paste <(add-trailing-spaces file1) file2 予想される視覚的出力は生成されません。file1file2

ベストアンサー1

単一のprコマンドを使用します。

pr -Tm file[12]
  • -T--omit-pagination) - ヘッダーとフッターを省略し、入力ファイルに設定されている改ページで改ページを削除します。

  • -m--merge) - すべてのファイルを1列に1つずつ並列に印刷します。

おすすめ記事