根据另一个文件的顺序对一个文件进行排序.两个文件都包含一个Header行



我有两个文件要稍后进行比较。两个文件的第一行都包含标题。这两个文件都是由不同的工具生成的。因为它们是由不同的工具创建的,所以两个文件之间的列顺序不匹配。我想对一个文件的列进行排序,以匹配另一个文件列的顺序。我想在unix中执行此操作。两个文件都使用管道作为分隔符。

示例:

文件1:

Userid|Account|Name|Dept
jonsa1|6532158|Sally|A42

文件2:

Name|Dept|Account|Userid
Sally|B64|6532158|jonsa1

我想重新排序文件2的列(和数据(以匹配文件1:

文件2:

Userid|Account|Name|Dept
jonsa1|6532158|Sally|B64

使用csvkit包中的csvcut对列进行重新排序,使用sed从第一个文件中提取标题并将管道转换为逗号,以便名称采用-c(列(选项的正确格式:

$ csvcut -d '|' -c "$(sed '1{s/|/,/g;q}' file1)" file2 | csvformat -D '|'
Userid|Account|Name|Dept
jonsa1value1|6532158|Sally|B64

最新更新