切り捨てずに複数の列を印刷する方法は?

切り捨てずに複数の列を印刷する方法は?

pr -m -t file1 file2私はこれが2つの列を提供することを知っています。

ファイル1:

a
abc
abcdefg
abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz

ファイル2:

1
123
12345678
12345678901234567890

-

$ pr -m -t file1 file2
a                   1
abc                 123
abcdefg                 12345678
abcdefghijklmnopqrstuvwxyzabcdefghi 12345678901234567890

上記は文字通りカットして貼り付けたものですが、ここでは端末で実際にどのように配置されているかを示すためにスペースを追加しました。

$ pr -m -t file1 file2
a                                   1
abc                                 123
abcdefg                             12345678
abcdefghijklmnopqrstuvwxyzabcdefghi 12345678901234567890

何らかの理由で、unixスタック交換はコードブロックを堅牢にしません。とにかく行番号の一致は必要ありません(ただし、一般的な質問に答えるにはどうすればよいか答えることができます)。しかし、私が望む主な属性は、行番号を切り捨てるのではなく改行することです。各ファイルを特定の幅に前処理し、パイプで接続する以外に選択肢はありませんか?では、どうすればよいですか?

command更新:ファイルの幅を制限し、改行を強制する方法がある場合は、次のようにします。pr -m -t <(command file1) <(command file2)

答え1

編集する:

並べ替えが心配ですか?

Perlスクリプトをインポートして見つけたらここ、作成者ピーター・シュトゥイザンダーcolumnFix.perl、名前を指定しますchmod u+x columnFix.perl(実行できることを確認するには、次の手順を実行します。

pr -J -m -t file1 file2 | /path/to/columnFix.perl

元の答え:

Iバージョンはprデフォルトで行を72文字に切り捨てます。 2つの列は最初の列を35文字に切り捨てます(35 char/column * 2 columns) + 1 char/separator = 71 characters(したがって2列目は36文字にすることができます)。

したがって、同意する場合は、実行しているのと同じコマンドを使用して、探しているように見える-J操作を実行する必要があります(元のコマンドにできるだけ近い)。列の並べ替えなし(コメントで提案した貼り付けコマンドの結果と似ています)

pr -J -m -t file1 file2

マニュアルページから:

-J、--接続線

行全体をマージし、-W行切り捨てをオフにし、列の並べ替えなし, --sep-string[=STRING] 区切り記号の設定

関連情報