下面存在是我的文件1项内容:比较COLUMN1,输出{列1文件1}不会在文件2
123|yid|def|
456|kks|jkl|
789|mno|vsasd|
,这是我的文件2内容
123|abc|def|
456|ghi|jkl|
789|mno|pqr|
134|rst|uvw|
我想在基于文件2文件1进行比较的唯一的事情是第1列。根据上述文件,则输出只能输出:
134|rst|uvw|
行与行比较不是答案,因为第2列和第3列都包含不同的内容,但只有第1列包含两个文件中完全相同的内容。
我该如何做到这一点?
目前我在我的代码中使用这样的:
#sort FILEs first before comparing
sort $FILE_1 > $FILE_1_sorted
sort $FILE_2 > $FILE_2_sorted
for oid in $(cat $FILE_1_sorted |awk -F"|" '{print $1}');
do
echo "output oid $oid"
#for every oid in FILE 1, compare it with oid FILE 2 and output the difference
grep -v diff "^${oid}|" $FILE_1 $FILE_2 | grep \< | cut -d \ -f 2 > $FILE_1_tmp
给定文件1和文件2,你只想输出'134 | rst | uvw |'?那么为什么不进行基于行的比较工作?如果要合并具有文件1和文件2中匹配列1的行,可以使用'join -t'|' file1 file2',然后使用'cut'来只输出相关的列。 – rubystallion
我的输入文件包含数千行,不可能知道要删除哪行 – MFAY