タブの交換をスペースで結合

タブの交換をスペースで結合

タブ区切り文字を使用して2つのソートされたファイルをリンクしようとしていますcsv

私はこのコマンドに初めて触れたので、どのようにjoin使用するのかわかりませんが、ファイル内のすべてのタブを空白に置き換えているようです(並べ替えがめちゃくちゃです)。

私が使用するコマンドは次のとおりです。

join -1 5 -2 2 -t $'\t' -o $order --header file1.csv file2.csv | 
column -t > result.csv

最初のファイルでは、データは次のようになります。5番目の場所熱と2位2番目のファイルの列です。変数は、$orderさまざまな列を含む単純な文字列です。「1.1 1.2 1.3」など。 (28中)。私が使用する区切り文字はSEから得られたものです。

これがどこから出てくるのかご存知ですか?

答え1

join区切り文字として使用される文字は、-t入出力に使用されます。

問題はcolumn -t使用する後処理段階にあります。列を整列させるために、タブ文字を適切な数のスペースで置き換えます。出力でタブを保持するには、joinデータを渡さないでくださいcolumn -t

column -t表形式データの最終(視覚的)プレゼンテーションにのみ使用されます。

答え2

column -tこれは、表形式モードが自動的に列幅を決定し、区切り出力として読み取ることができる表形式出力を生成するためです。スペースまさかタブ。これを明示的に使用するには、column出力区切り文字でフラグを設定します。-o

join -1 5 -2 2 -t $'\t' -o $order --header file1.csv file2.csv | 
column -o '\t' > result.csv

関連情報