基于列连接两个csv文件

时间:2016-04-20 04:40:38

标签: linux bash shell csv

我有2个csv文件,如下所示

AllEmpployees.txt
EmpID,Name

QualifiedEmployeees.csv
Empid

现在我想找到合格员工的姓名

Empid,Name

使用以下命令

   join -t , -1 1 -2 1 QualifiedEmployeees.csv AllEmployees.txt

这导致零记录。确定有一个雇员的交集。

参考:https://superuser.com/questions/26834/how-to-join-two-csv-files

是因为合格的员工档案只有一列而且没有分隔符吗?或者我做错了什么

4 个答案:

答案 0 :(得分:1)

试试这个:

C#

答案 1 :(得分:0)

如果<ScrollView android:layout_height="match_parent" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="kyr.com.knowyourrights.DrugLaw" android:orientation="vertical" > <WebView android:id="@+id/mybrowser1" android:layout_width="fill_parent" android:layout_height="fill_parent"> </WebView> </RelativeLayout> </ScrollView> 不起作用(没有产生尽可能多的行,或根本没有行),很可能是因为您的输入没有排序。从join我们可以看到:

  

当使用默认字段分隔符时,应该在中排序要连接的文件        使用-b选项整理排序顺序(1),在它们要连接的字段上,oth-        erwise join可能不会报告所有字段匹配。当字段分隔符字符由。指定时        -t选项,整理顺序应与sort(1)相同,不带-b选项。

答案 2 :(得分:0)

join需要输入文件进行排序,如果输入有DOS行结尾,它可能会给出不准确的结果。

我建议使用此gnu awk命令来避免任务的两种情况:

awk -F, -v RS='[\r\n]+' 'FNR==NR{quals[$1]; next} $1 in quals' QualifiedEmployeees.csv AllEmployees.txt

000009929745,a
000009929745,c
000009929745,d
000009929745,e

答案 3 :(得分:0)

awk -F, 'FNR==NR{a[$1];next}($1 in a){print $2}' Qualiedemployees.txt allEmployees.txt