2つのファイルを2列に印刷したいのですが、最初のファイルは左側に、2番目のファイルは右側にあります。
paste
区切り文字として文字を挿入することしかできないため、この機能は実行されません。したがって、最初のファイル行の長さが異なる場合、出力はねじれます:
$ cat file1
looooooooong line
line
$ cat file2
hello
world
$ paste file1 file2
looooooooong line hello
line world
fmt --add-spaces --width 50
のような末尾のスペースを追加するコマンドの場合 問題は解決されます:
$ paste <(fmt --add-spaces --width 50 file1) file2
looooooooong line hello
line world
しかし、これを行う簡単な方法はわかりません。
では、ねじることなく複数のファイルを水平方向にマージして印刷するにはどうすればよいでしょうか。実際、私はそれらを同時に見たいだけです。
UPD: 末尾にスペースを追加するコマンドは存在します(たとえば、xargs -d 'n' printf '%-50sn'
)
しかし、
のようなソリューション$ paste <(add-trailing-spaces file1) file2
file1の行数がfile2より少ない場合、期待どおりに機能しません。
承認された回答:
paste file{1,2}| column -s $'t' -tn
?
looooooooong line line hello
line world
-
これは
column
に伝えていますTab
を使用するにはpaste
から取得する列の区切り文字として 指定されていない場合、そこにあるデフォルトの区切り文字であるコマンド。一般的に:paste -d'X' file{1,2}| column -s $'X' -tn
ここで、
X
任意の1文字を意味します。ファイルに表示されないことを許可したものを選択する必要があります。 -
-t
オプションは、入力に含まれる列の数を決定するために使用されます。 - これにより、2つのファイルの間に長いタブが追加されることはありませんが、他の回答では追加されます。
-
これは、file1に空の行があった場合でも機能し、file1の印刷領域に2番目のファイルを印刷しません 、以下の入力/出力を参照
入力ファイル1:
looooooooong line line
入力ファイル2:
hello world
出力:
looooooooong line hello world line