我正在尝试csv
使用制表符分隔符加入两个已排序的文件。
我是该join
命令的新手,所以我不太确定如何使用它,但它似乎正在用空格替换文件中的每个选项卡(弄乱了对齐方式)。
我正在使用的命令是:
join -1 5 -2 2 -t $'\t' -o $order --header file1.csv file2.csv |
column -t > result.csv
在第一个文件中,数据按照第5列和第二个文件中的第 2 列排序。该变量$order
是一个简单的字符串,包含不同的列“1.1 1.2 1.3”等(其中28个)。我使用的分隔符来自 SE。
你知道这是从哪里来的吗?
join
with用作分隔符的字符-t
将用于输入和输出。问题在于您使用的后处理步骤
column -t
。它将用适当数量的空格替换制表符,以很好地对齐列。如果要保留 的输出中的选项卡join
,请不要通过column -t
.仅
column -t
用于表格数据的最终(视觉)呈现。这是因为
column -t
,表格模式会自动确定列宽并创建可读的表格输出,并用空格而不是制表符分隔输出。要使用 显式执行此操作column
,请将其输出分隔符设置标志与-o