انجمنهای فارسی اوبونتو
تازه کار => انجمن تازهکاران => نویسنده: eXtrem0us در 20 اردیبهشت 1394، 03:46 بظ
-
سلام
همونطور که اطلاع دارید، دستور join تو محیط shell، دو فایل متنی sort شده رو مثل جداول پایگاه دادهی رابطهای به هم پیوند میزنه.
اما وقتی میخوام دو فایل رو که با دستور sort از قبل مرتبشون کردم رو با join پیوند بزنم، join پیغام خطا میده که دو فایلی که بهم دادی مرتب نیست. اشکال کار از اینجاست:
من یه همچین دستوری رو تو محیط bash اجرا کردم و نتیجه رو هم میبینید:
$ dpkg --get-selections exim*|sort
exim4-base install
exim4-config install
exim4-daemon-light install
exim4 install
همونطور که میبینید exim4 تو انتهای لیست اومده، در صورتی که باید اول میومد.
من سوئیچهای مختلف دستور sort رو هم امتحان کردم، اما هیچ کدوم موثر نبود. :-?
سوال من این هستش که چطور میشه یک لیست رو درست sort کرد، به طوری که برای join قابل فهم باشه؟
-
اون چیزی که داری سورت میکنی، توش اسپیس داره خصوصا آخر exim4 که تو خط آخر میفته. چون - قبل از کاراکتر اسپیس هست پس اینا میفتن اول، اون میره آخر.
حالا اگر میخوای اون ستون اول درست مرتب بشه باید اضافهها رو با یه چیزی مثل cut یا awk بریزی دور ;)
خروجی با cut:
:~# dpkg --get-selections exim* | cut -f1 |sort
exim4
exim4-base
exim4-config
exim4-daemon-light
خروجی با awk:
:~# dpkg --get-selections exim* | awk -F" " '{print $1}'|sort
exim4
exim4-base
exim4-config
exim4-daemon-light
-
ممنونم. با راهنمایی شما حل شد! :D