【发布时间】:2012-07-17 22:57:38
【问题描述】:
我有两个具有公共字段的文件。我想将两个文件与公共字段合并,并在linux命令中使用awk将合并后的文件写入另一个文件。
文件1
412234$name1$value1$mark1
413233$raja$$mark2
414444$$$
文件2
412234$sum$file2$address$street
413233$sum2$file32$address2$street2$path
414444$$$$
这些示例文件由$ 分隔,输出合并文件也将在$ 中。这些行也有空字段。
我尝试了使用join的脚本:
join -t "$" out2.csv out1.csv |sort -un > file3.csv
但是发生了总数不匹配的情况。
试过awk:
myawk.awk
#!/usr/bin/awk -f
NR==FNR{a[FNR]=$0;next} {print a[FNR],$2,$3}
我跑了
awk -f myawk.awk out2.csv out1.csv > file3.csv
这也花费了太多时间。没有回应。
这里out2.csv是主文件,我们必须与out1.csv比较
您能帮我将合并的文件写入另一个文件吗?
【问题讨论】:
-
要使用连接,输入文件必须已经排序。您正在通过管道传递给
sort -n,这表明它们可能没有正确排序。尝试按字典顺序(不是数字)对它们进行排序,然后使用连接,然后按数字对输出进行排序。
标签: bash awk export-to-csv