unix shell 脚本 - 比较 2 个文件.. file1 有 2 列(emp id)和 emp_sal),文件 2 有 2 列(emp_id)和 emp_sal

unix shell 脚本 - 比较 2 个文件.. file1 有 2 列(emp id)和 emp_sal),文件 2 有 2 列(emp_id)和 emp_sal

我需要比较每个emp_idin是否file1存在于 和 中file2emp_id然后我需要比较emp_salinfile1和是否file2与该匹配emp_id。类似地,我必须比较所有内容emp_ids并返回一个文件中匹配的输出,而在另一个文件中不匹配的输出。file1file2

文件1

Emp-id emp-sal
1234.     1200
1255.     1400
4567.      5800
8765.      2340

文件2

Emp-num. Emp-sal- amt
1234.   1200
1255.    1700
4567.   5800
8765.   2340

输出匹配记录

Emp-id emp-sal emp- sal-amt
1234.    1200.     1200 
4567.     5800.    5800
8765.      2340.    2340

不匹配

Emp-id emp-sal emp-sal-amt
1255.    1400.     1700

答案1

配套案例:

join <(< File1 sed '1d; s/  */ /g' | sort -n -k1,1) \
     <(< File2 sed '1d; s/  */ /g' | sort -n -k1,1) | awk '$2==$3'

join需要由单个字符分隔的字段(默认为空白),并且行必须按关键字段(默认为第一个字段)排序,因此我添加了一些来sed清理输入:'1d;将跳过标题,并s/ */ /g'替换多个空格与一个空格。

相关内容