下面存在是我的文件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