আপনি যদি সত্যিই ব্যবহার করছেন gawk
(যদিও আপনি ব্যবহার করছেন nawk
, অথবা mawk
, এটি ক্ষেত্রে প্রযোজ্য না হয়), আপনি v4.0 থেকে উপলব্ধ লোডযোগ্য এক্সটেনশানগুলির একটি ব্যবহার করে স্থানীয়ভাবে এটি করতে পারেন । আমি ব্যবহার করছি (v4.0 এক্সটেনশনগুলি লোড করার জন্য সিনট্যাক্সে একটি ভিন্নতা ছিল)।gawk-4.1.x
filefuncs
এক্সটেনশন লোড করা একটি stat()
ফাংশন যুক্ত করে (অন্যদের মধ্যে) :
@load "filefuncs"
BEGIN {FS=":"}
(NF==7) {
printf("user: %s %i %i\n",$1,$3,$4)
rc=stat($6,fstat)
err=ERRNO # ERRNO is a string, not an int!
if (rc<0) {
printf(" error: %s rc=%i %s\n",$6,rc,err)
} else {
if (fstat["type"]!="directory")
printf(" ENOTDIR: %s %s\n",$6,fstat["type"])
if (fstat["uid"]!=$3)
printf(" uid mismatch: %s %i!=%i\n",$6,fstat["uid"],$3)
if (fstat["gid"]!=$4)
printf(" gid mismatch: %s %i!=%i\n",$6,fstat["gid"],$4)
}
}
filefuncs(3am)
এই এক্সটেনশনের বিশদটির জন্য ম্যান পৃষ্ঠাটি দেখুন ।
এর মতো কিছু দিয়ে চালান:
gawk -f testhome.awk <(getent passwd) # bash/zsh and glibc
gawk -f testhome.awk /etc/passwd
আপনি নিশ্চিত করতে পারেন যে আপনার gawk
বাইনারি এর সাথে এক্সটেনশানগুলিকে সমর্থন করে:
BEGIN {
if (!("api_major" in PROCINFO))
printf("No extension API.\n")
else
printf("Extension API v%s.%s.\n",PROCINFO["api_major"],PROCINFO["api_minor"])
}
পাশাপাশি: ফাইলটি gawk
পড়ার জন্য একটি ছোট লাইব্রেরি ফাংশন নিয়ে আসে passwd
, আপনি এটির মতো অনুরোধ করতে পারেন:
gawk -i passwd.awk -- 'BEGIN { while(uu=getpwent()) {print uu;} endpwent(); }'
আমি getent
লিনাক্স / গ্লিবসি সিস্টেমগুলিতে ব্যবহার করতে পছন্দ করি কারণ এটি এনএসউইচ সমর্থন করে।