这是一个例子:
$ cat file1
hello
there
$ cat file2
some,very,long,line,hello,csv
some,very,long,line,nope,csv
$ join -t, -1 1 -2 5 file1 file2
hello,some,very,long,line,csv
这按照记录的方式工作:连接的字段被拉到左侧,并打印剩余的字段。
但我想要的输出是保留 CSV (file2) 列排序。我可以使用此命令完整打印 CSV,该命令明确列出了 CSV 字段编号:
join -t, -1 1 -2 5 -o $(head -n1 file2 | awk -F, '{print NF}' | xargs seq | sed 's/^/2./' | paste -d, -s) file1 file2
它打印:
some,very,long,line,hello,csv
我想法为此,它join
有一个auto
格式。这是手册页join
关于以下内容的宝贵内容-o FORMAT
:
如果 FORMAT 是关键字“auto”,则每个文件的第一行决定每行输出的字段数。
但是,我不知道这意味着什么,也不知道应该如何使用该格式auto
。
我尝试了这个,但没有得到任何与之前不同的结果:
$ join -t, -1 1 -2 5 -o auto file1 file2
hello,some,very,long,line,csv
一个天真的解释是我应该将必需的字段列出为每个文件的第一行,但这也是错误的。
所以,我的问题是,它是什么auto
,我应该如何使用它?我可以用它来保留输入 CSV 的列顺序吗?