Dear All
I asked about the following
Using “awk” utilities how can I get the sum of accounts id’s that has the same group?
Thanks and warm regards,
Zohair
Dear All
I asked about the following
Using “awk” utilities how can I get the sum of accounts id’s that has the same group?
Thanks and warm regards,
Zohair
السلام عليكم ..
في البدايه اخي , سوف افترض انك تمتلك المعلومات الاساسية حول كتابه سكربتات الـ awk , وايضاً بفترض ايضاً ان هذا ليس سؤال خاص بتمرين او واجب ما ..
بالنسبه لسؤالك فانت لم تحدد ماذا كان الـمجوعه Group يتم ادخالها يدوياً , او ان المطلوب هو الحساب لكل المجموعات , وللتسهيل سوف نأخذ الحاله الاولى , والثانية سوف ادعها لك , تنشط بها نفسك ..
فالبدايه , نحن سوف نتعامل مع الملف etc/passwd/ وهذا الملف هو الذي يحتوي على معلومات عن عن الـ Users ID - UIDs و GIDs- Groups ID , وكل سطر فيه يشبه الشكل العام التالي :
username:passwd:UID:GID:full name,room number,work phone,homephone,other:directory:shell
طبعاً الحقل passwd هنا مشفر .
ومن ذلك نستطيع الفهم ان الفكرة الاساسية للسكربت البسيط الذي سوف نقوم بكتابته هو قراءة حقل UID , ومن ثم التأكد ان GID يساوي المجموعه التي نريد حساب مجموع الـ UIDs لها .
الان نقوم بفتح اي برنامج تحرير , ونكتب التالي . انا هنا سوف استخدم الـ cat , وسيكون كالتالي :
$ cat myscript.awk
getline m_gid
BEGIN { print "Begin Script" }
if ($4= =m_gid)
sum_uid + = $3
END { printf "Sum of UID = %d", sum_uid }طبعاً هنا $3 , $4 ترمز للعمود الثالث والرابع على التوالي اللذان يرمزان للـ UID و GID
بعد ذلك يمكننا تنفيذ السكربت من الشل كالتالي :
$ gawk -F : -f myscript.awk
هام: يجب ان تضيف العباره etc/passwd/ بعد الكود السابق , اي بعد مسافه من myscript.awk , لاني عندما اضيفتها في الكود السابق وعملت رد , ظهرت لي رسالة 403 forbidden في المنتدى ؟؟؟!!! ..
لاحظ اننا استخدمنا الاداه gawk وهي نسخة GNU من اداه awk الموجودة في انظمة اليونكس, وهي موجوده في نظام اللينكس بهذا الاسم gawk .
وايضاً لاحظ لاستخدام الخيار: F- , حيث يرمز لما يعرف للفاصل بين الحقول , وفي حالتنا هذه , سيكون هو الرمز :
بالتوفيق ..
تم تعديل هذه المشاركة بواسطة محمد معاشر في 10 ديسمبر 2006 في 19:43
هذا الموضوع مغلق.