runawk মডিউল impements এবং স্বতন্ত্র awk প্রোগ্রাম লিখতে সাহায্য করে awk দোভাষী জন্য একটি অতি ক্ষুদ্র আলোয়ান.
প্রেরণা
প্রোগ্রামিং এর জন্য awk ব্যবহার করে বছর পরে আমি পেয়েছি সত্ত্বেও যে
তার সরলতা এবং সীমাবদ্ধতা awk ব্যাপক scripting জন্য যথেষ্ট ভাল
বিভিন্ন কর্ম পরিধি. Awk তাদের বড় হিসাবে poweful না
পার্ল, রুবি, টিসিএল এবং অন্যদের মত চেহারা কিন্তু এটা তাদের নিজস্ব হয়েছে
প্রায় সব সংহতি, সরলতা এবং প্রাপ্যতা মত সুবিধা
ইউনিক্স সিস্টেম. আমি ব্যক্তিগতভাবে তার তথ্য চালিত প্রকৃতি চান এবং
টোকেন অভিযোজন, সহজ টেক্সট প্রক্রিয়াকরণের জন্য খুব দরকারী কৌশল
ইউটিলিটি.
কিন্তু! দুর্ভাগ্যবশত দোভাষী কিছু গুরুত্বপূর্ণ বৈশিষ্ট্য অভাব আছে awk এবং
কখনও কখনও, এটা হতে Whould হিসাবে হিসাবে ভাল না কাজ.
কিছু কিছু সমস্যার আমি (অবশ্যই তাদের কিছু) দেখুন.
1) awk মডিউল জন্য সমর্থন অভাব আছে. আমি ছোট প্রোগ্রাম তৈরি, এমনকি যদি আমি
প্রায়ই পূর্বে নির্মিত ফাংশন ব্যবহার করতে চান এবং ইতিমধ্যে ব্যবহৃত
অন্যান্য স্ক্রিপ্ট. অর্থাৎ, তা ফাংশন orginise মহান Whould
তাই লাইব্রেরি (মডিউল) বলা হয়.
2) # আর্গুমেন্ট পাস করার জন্য! / Usr / bin / awk -f স্ক্রিপ্ট (না awk থেকে
দোভাষী), এটা একটি তালিকা prepand করা প্রয়োজন
(দুই বিয়োগ রাশিচক্রের) - সঙ্গে আর্গুমেন্ট. আমার মনে করেন, এই খারাপভাবে দেখায়.
উদাহরণ:
awk_program:
& Nbsp; & nbsp; & nbsp; #! / Usr / bin / awk -f
& Nbsp; & nbsp; & nbsp; {শুরু
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; (i = 1; আমি argc <আমি) {
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; printf, "argv [% D] =% s এর", আমি argv [আমি]
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; }
& Nbsp; & nbsp; & nbsp; }
শেল সেশন:
& Nbsp; & nbsp; & nbsp; % Awk_program --opt1 --opt2
& Nbsp; & nbsp; & nbsp; / Usr / bin / awk: উপেক্ষা করা অজানা বিকল্প --opt1
& Nbsp; & nbsp; & nbsp; / Usr / bin / awk: উপেক্ষা করা অজানা বিকল্প --opt2
& Nbsp; & nbsp; & nbsp; % Awk_program - --opt1 --opt2
& Nbsp; & nbsp; & nbsp; Argv [1] = - Opt1
& Nbsp; & nbsp; & nbsp; Argv [2] = - Opt2
& Nbsp; & nbsp; & nbsp; %
আমার মতে awk_program স্ক্রিপ্ট ঠিক মত (এই মত কাজ করা উচিত
স্বাভাবিক প্রোগ্রাম না)
& Nbsp; & nbsp; & nbsp; % Awk_program --opt1 --opt2
& Nbsp; & nbsp; & nbsp; Argv [1] = - Opt1
& Nbsp; & nbsp; & nbsp; Argv [2] = - Opt2
& Nbsp; & nbsp; & nbsp; %
এটা runawk ব্যবহার করা সম্ভব হয়.
3) #! / Usr / bin / awk -f স্ক্রিপ্ট আর্গুমেন্ট (বিকল্প হ্যান্ডলগুলি) এবং চায়
stdin থেকে পড়া, এটি যোগ করা প্রয়োজন
Explicitely শেষ যুক্তি হিসাবে - আপনার / dev / stdin ('বা').
উদাহরণ:
awk_program:
& Nbsp; & nbsp; & nbsp; #! / Usr / bin / awk -f
& Nbsp; & nbsp; & nbsp; {শুরু
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; {(argv [1] "--flag" ==) যদি
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; পতাকা = 1
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Argv [1] = "" নামের ফাইল পড়া না # "--flag"
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; }
& Nbsp; & nbsp; & nbsp; }
& Nbsp; & nbsp; & nbsp; {
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; মুদ্রণ "পতাকা =" পতাকা "$ 0 =" $ 0
& Nbsp; & nbsp; & nbsp; }
শেল সেশন:
& Nbsp; & nbsp; & nbsp; % প্রতিধ্বনি পরীক্ষা | awk_program - --flag
& Nbsp; & nbsp; & nbsp; % প্রতিধ্বনি পরীক্ষা | awk_program - --flag আপনার / dev / stdin
& Nbsp; & nbsp; & nbsp; পতাকা = 1 $ 0 = পরীক্ষা
& Nbsp; & nbsp; & nbsp; %
মূলত awk_program ভালো কাজ করা উচিত
& Nbsp; & nbsp; & nbsp; % প্রতিধ্বনি পরীক্ষা | awk_program --flag
& Nbsp; & nbsp; & nbsp; পতাকা = 1 $ 0 = পরীক্ষা
& Nbsp; & nbsp; & nbsp; %
এই সব probles runawk দ্বারা মীমাংসিত হয় এবং আমি এটা লিখেছে কেন এটি হয়.
আমি যা বিতরণ runawk থেকে কয়েক মডিউল অন্তর্ভুক্ত
আমার জন্য দরকারী এবং আমি আপনার জন্য খুব সহায়ক হবে আশা করি.
ইনস্টলেশন
0) বিএসডি করতে প্রয়োজন বোধ করা হয়. আমি এটা 'করতে' নাম কিন্তু তার আসল নাম হতে পারে
& Nbsp; & nbsp; . & nbsp তারতম্য; bmake এবং pmake সম্ভব নাম.
& Nbsp; & nbsp; আপনি ডিফল্ট ভবন অপশন পরিবর্তন করার প্রয়োজন হলে,
& Nbsp; & nbsp; ভালো না চালানো
& Nbsp; & nbsp; & nbsp; & nbsp; env [YOUR_ASSIGNMENTS] না <টার্গেট>
& Nbsp; & nbsp; যেমন নিচের বিভাগে দেখুন
আপনি ভালো ডাউনলোড করেছি 1) পদ্ধতি হলো
& Nbsp; & nbsp; gzip, -ডিসি runawk-এক্স ওয়াই-Z.tar.gz | আলকাতরা -xf-
2) সিডি runawk-এক্স ওয়াই-টু Z
3) করা
4) (ঐচ্ছিক) ইনস্টলেশনের dirs করা
5) ইনস্টল করা
সময় পরিবর্তন করা যাবে যে, Makefile ভেরিয়েবল অনেক আছে
. ইনস্টলেশন & nbsp; Runawk নিজস্ব ভেরিয়েবল (সব তারা begining এ হয়
Makefile):
& Nbsp; উপসর্গ & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; - Runawk থেকে ইনস্টল করা হয় যেখানে
& Nbsp; MODULESDIR & nbsp; & nbsp; & nbsp; & nbsp; - মডিউল ইনস্টল করা হয় যেখানে ডিরেক্টরি
& Nbsp; AWK_PROG & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; - Awk দোভাষী পাথ
& Nbsp; STDIN_FILENAME - পথ stdin ডিভাইস ফাইল
সবচেয়ে বেশি ব্যবহৃত বিএসডি করতে এর ভেরিয়েবল (,
সব অন্যদের জন্য -) করতে ডকুমেন্টেশন এবং .mk ফাইল দেখতে
& Nbsp; BINDIR - যেখানে নিজেই ইনস্টল করা হয় এক্সিকিউটেবল runawk
& Nbsp; মন্দির - ম্যানুয়াল পেজ ইনস্টল করা হয় যেখানে
& Nbsp; BINOWN - এক্সিকিউটেবল মালিক runawk
& Nbsp; BINGRP - এক্সিকিউটেবল গ্রুপ runawk
& Nbsp; MANOWN - man পৃষ্ঠা মালিক
& Nbsp; MANGRP - man পৃষ্ঠা গ্রুপ
উদাহরণ:
& Nbsp; & nbsp; env সিসি = জিসিসি
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; উপসর্গ = / হোম / cheusov / স্থানীয়
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; LDFLAGS = '- এল, / usr / pkg / lib -Wl, -Wl -rpath / usr / pkg / lib'
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; LDADD = -lextralib
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; CFLAGS = '- Werror ওয়াল'
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; CPPFLAGS = আমি, / usr / pkg / অন্তর্ভুক্ত
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; BINOWN = cheusov
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; BINGRP ব্যবহারকারীদের =
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; MANOWN = cheusov
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; MANGRP ব্যবহারকারীদের =
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; MKCATPAGES = কোন
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; -s সব dirs ইনস্টল
এই রিলিজে নতুন কি ইনস্টল করা:
- অপশন -i, আমি, এবং সব দীর্ঘ অপশন সম্পূর্ণরূপে মুছে ফেলা হয়েছে.
- বিকল্প -T ট্যাবযুক্ত ইনপুট জন্য যোগ করা হয়েছিল.
- man পৃষ্ঠা মধ্যে নথিভুক্ত করা হয় -v বিকল্প.
- জিসিসি সংকলন সতর্কবার্তা জন্য সংশোধন করা হয়েছে.
- .
- নতুন, runcmd.awk, এবং মানুষের পাতায় টাইপো সংশোধন করা হয়েছে.
অ খালি MAKEOBJDIR সঙ্গে সংকলন জন্য সংশোধন করা হয়েছে
সংস্করণ 1.4.4 নতুন কি,
অস্থায়ী ডিরেক্টরির মধ্যে সাব অপসারণের একটি বাগ
- ছিল সংশোধন করা হয়েছে.
- runawk_modules.3 জন্য উন্নতি.
কি সংস্করণ 1.4.3 নতুন:
- paexec (1) ব্যবহার করে না সিস্টেম ( 3) আর অস্থায়ী ডিরেক্টরি মুছে ফেলার জন্য.
- ফাংশন print_help () init_getopt.awk করতে power_getopt.awk মডিউল থেকে সরিয়ে নেওয়া হয়েছে.
কি সংস্করণ 1.4.2 নতুন:
- এই সংস্করণ সব মডিউল যেখানে runawk_modules.3 যোগ নথিভুক্ত, দীর্ঘ অপশন অবলোপ আমি এবং আমি বিকল্প সরিয়ে দেয়, এবং pod2man ভবন জন্য প্রয়োজন হয় না, তাই বিতরণ tarball রূপে মানুষের পৃষ্ঠা রয়েছে.
সংস্করণ 1.4.0 নতুন কি:
- exitnow.awk সালে, exitnow (অবস্থা) ফাংশন এখন শেষ বিভাগে চলমান ছাড়া স্ক্রিপ্ট সঞ্চালনের শেষ, এমনকি যদি অবস্থা == 0.
- ফাংশন is_ {ফাইল, ডিরেক্টরি, Exec, সকেট, FIFO, blockdev, chardev, সিমবলিক লিঙ্ক} অন্তর্ভুক্ত io.awk নতুন মডিউল, file_size, এবং ফাইলটি অবশ্যই FILE_TYPE. tokenre.awk নতুন ফাংশন splitre0 আছে ().
সংস্করণ 1.3.2 নতুন কি:
- অভ্যন্তরীণ অ্যারে এখন স্বয়ংক্রিয়ভাবে স্থানান্তর করা হয়. এই xargs (1), যেমন, বিড়াল files.txt সঙ্গে একযোগে runawk (1) ব্যবহার করা হয়েছে |. Xargs runawk -e '...'
সংস্করণ 1.3.0 নতুন কি:
- একটি ইন্টেল C কম্পাইলার সতর্কতামূলক বার্তা জন্য একটি ফিক্স.
- ফাংশন shquote (জন্য একটি ফিক্স).
- প্রকল্পের সোর্স কোড এইভাবে একটি সহজ কোনো উপপ্রকল্প ইনস্টলেশন, যার ফলে পুনর্গঠন করা হয়েছে. উদাহরণ, মডিউল, runawk, alt_getopt, এবং ডক (করণীয়, উপস্থিত README, ইত্যাদি ফাইল)
মডিউল / shquote.awk থেকে
সংস্করণ 1.1.0 নতুন কি
- -F বিকল্প যোগ করা হয়েছিল
- নতুন ord.awwas ftrans_in.awk, এবং glob.awk মডিউল অন্তর্ভুক্ত করা হয়েছে.
- নতুন alt_getopt এক্সিকিউটেবল শেল স্ক্রিপ্ট-এ স্বল্প ও দীর্ঘ অপশন পার্স জন্য অন্তর্ভুক্ত করা হয়.
- নতুন min3, min4, min5, min_key, MIN_VALUE, এবং key_of_min_value (min.awk), এবং max3, max4, max5, max_key, MAX_VALUE, এবং key_of_max_value (max.awk) ফাংশন প্রদান করা হয়.
- নতুন নমুনা যোগ করা হয়েছে:. উদাহরণ / demo_minmax, উদাহরণ / demo_tokenre3, উদাহরণ / demo_ftrans, উদাহরণ / demo_glob *
- নতুন বৈশিষ্ট্য multisub.awk মধ্যে যোগ করা হয়েছিল.
- ক্ষুদ্র উন্নতি ইনস্টলেশন পদ্ধতি তৈরি করা হয়.
কি সংস্করণ 0.16.0 নতুন:
- সবচেয়ে runawk মডিউল জন্য ডেমো প্রোগ্রাম প্রচুর তৈরি করা হয়েছে এবং তারা এখন উদাহরণ / ডিরেক্টরির মধ্যে হয়. নতুন মেগা মডিউল;-) ডকুমেন্টেশন এবং ডেমো প্রোগ্রাম উদাহরণ / demo_power_getopt দেখুন power_getopt.awk. এটা সত্যিই সহজ হ্যান্ডলিং অপশন তোলে. নতুন মডিউল: embed_str.awk has_suffix.awk has_prefix.awk readfile.awk modinfo.awk ক্ষুদ্র সংশোধন করা হয়েছে এবং dirname.awk এবং basename.awk উন্নতি. এখন তারা DIRNAME (1) ও নেম সঙ্গে পুরোপুরি সামঞ্জস্যপূর্ণ (1) RUNAWK শিশু awk subprocess জন্য নিম্নলিখিত এনভায়রনমেন্ট ভেরিয়েবল সেট: RUNAWK_MODC - awk RUNAWK_MODV_ প্রেরণ মডিউল একটি সংখ্যা (-f ফাইলের নাম) - সম্পূর্ণ পাথ মডিউল #N ডাক: থেকে , এন [0..RUNAWK_MODC) সীমার মধ্যে হয়. 'Awk এর আর্গুমেন্ট তালিকায় যোগ করা হয়েছে -' অতিরিক্ত / কৃত্রিম যদি RUNAWK 1 সন্তানের awk subprocess জন্য RUNAWK_ART_STDIN এনভায়রনমেন্ট ভেরিয়েবল সেট করে. Makefile: bmake-ধর্ম মুছে ফেলা হয়েছে. এখন Makefile FreeBSD 'র মেক সঙ্গে পুরোপুরি সামঞ্জস্যপূর্ণ. CLEANFILES লক্ষ্য 'test_all' লক্ষ্য হাত-প্রণীত বিধি গৌণ ফিক্স পরিবর্তে ব্যবহৃত হয়
পাওয়া মন্তব্যসমূহ না