入力ファイルにタブがないことがわかっている場合は、 expand
を使用します @oyss の回答を簡略化します:
paste one.txt two.txt | expand --tabs=50
入力ファイルにタブがある可能性がある場合は、いつでも最初に展開できます:
paste <(expand one.txt) <(expand two.txt) | expand --tabs=50
pr
を使用できます これを行うには、-m
を使用します ファイルをマージするためのフラグ、列ごとに 1 つ、および -t
ヘッダーを省略します。例:
pr -m -t one.txt two.txt
出力:
apple The quick brown fox..
pear foo
longer line than the last two bar
last line linux
skipped a line
関連項目:
- コマンドの結果を並べて表示
- テキスト ファイルを列単位で結合
@Hasturkun の回答を少し拡張するには:デフォルトで pr
は出力に 72 列しか使用しませんが、端末ウィンドウの使用可能なすべての列を使用するのは比較的簡単です:
pr -w $COLUMNS -m -t one.txt two.txt
ほとんどのシェルは (および更新) を保存します $COLUMNS
での端末の画面幅 シェル変数なので、その値を pr
に渡すだけです 出力の幅設定に使用します。
これは @Matt の質問にも答えます:
<ブロック引用>pr が画面幅を自動検出する方法はありますか?
いいえ:pr
それ自体は画面幅を検出できませんが、 -w
を介して端末の幅を渡すことで少し助けています オプション。
$COLUMNS
に注意してください 環境変数ではなくシェル変数であるため、子プロセスにはエクスポートされません。したがって、上記のアプローチはスクリプトでは機能せず、インタラクティブな TTY でのみ機能する可能性があります...スクリプトで失われた LINES および COLUMNS 環境変数を参照してください代替アプローチ