سلام
سوالی هفتهی پیش توی stackoverflow پرسیده شد که از این قرار بود: (
آدرس سوال)
دو فایل داریم
داخل فایل اولی دو گروه از فیلد ها رو داریم؛ مثلا:
1 2
2 3
3 6
داخل فایل دومی هم ۴ سری فیلد که فیلدهای دوم و سوم مهم هستند؛ مثلا:
a 1 2 xx
b 2 1 xx
c 3 4 xx
d 6 3 xx
سوال از این قرار هست:
چگونه میشه خطوطی از فایل دوم رو به دست آورد که اگه فیلد دوم و سوم اون تلفیق بشن؛ یا باید به صورت مستقیم در فایل اولی وجود داشته باشه و یا برعکس اون!
مثلا در فایل اولی داشتیم
1 2 - یعنی اگه در تلفیق ستون دوم و سوم از فایل دومی دارای عبارت 21 ویا 12 بود؛ کل اون خط از فایل دوم رو نشون بده! (باید خط اول و دوم رو نشون بده)
یا مثلا در فایل دوم؛اگر تلفبق ستون دوم و سوم؛ 36 و 63 بود؛ اون خط او نشون بده! (خط آخر رو نشون میده)
در نتیجه خروجیمون باید بشه این:
a 1 2 xx
b 2 1 xx
d 6 3 xx
یه بندهخدایی اومد با خط کل مسله رو حل کرد:
awk 'NR == FNR {a[$1,$2]=1; a[$2,$1]=1; next} ($2 SUBSEP $3) in a' File_1 File_2
من هرچی تلاش میکنم نمیتونم متوجه بشم چه عملیاتی در حال شکل گرفت هست؛ اگه کسی متوجه میشه اینو تحلیل کنه ممنون میشم