একটি সাংখ্যিক সাংগঠনিক স্কিমে বিভিন্ন সংখ্যক শীর্ষস্থানীয় জিরো যুক্ত করতে আমার সিড সিনট্যাক্স নামাতে আমার সমস্যা হচ্ছে। আমি যে স্ট্রিংগুলি চালাচ্ছি সেগুলি প্রদর্শিত হবে
1.1.1.1,Some Text Here
সেড সিনট্যাক্সের উপকার
sed -r ":r;s/\b[0-9]{1,$((1))}\b/0&/g;tr"
আমি প্রতিক্রিয়া প্রকাশ করতে সক্ষম
01.01.01.01,Some Text Here
যাইহোক, আমি যা খুঁজছি তা ক্ষেত্রের 2 এবং 3 এবং 3 ক্ষেত্রের 2 অঙ্কের শূন্য-পূরণের জন্য এমন কিছু যা যাতে সমস্ত আইটেমের মান [0-9] হয় [[0-9] { 2}। [0-9] {2}। [0-9] {3}
1.01.01.001,Some Text Here
আমার জীবনের জন্য আমি পিরিয়ডকে শুধুমাত্র সংখ্যায় স্ন্যাপ করার জন্য প্রয়োজনীয় প্যারামিটারগুলি অন্তর্ভুক্ত করার জন্য কীভাবে সীমানা পরিবর্তন করতে পারি তাও বুঝতে পারি না। আমি মনে করি এটি একটি শব্দের সীমানায় শূন্য অক্ষরের সাথে ম্যাচগুলি বোঝে \ বি এর ব্যবহারের সাথে কিছু যুক্ত রয়েছে তবে আমি বুঝতে পারি না কেন আমার ম্যাচে পিরিয়ড যুক্ত করার চেষ্টাটি ব্যর্থ হয়েছে:
sed -r ":r;s/\.\b[0-9]{1,$((1))}\b/0&/g;tr"
sed -r ":r;s/\b\.[0-9]{1,$((1))}\b/0&/g;tr"
Both cause the statement to hang
sed -r ":r;s/\b[0-9]\.{1,$((1))}\b/0&/g;tr"
sed -r ":r;s/\b[0-9]{1,$((1))}\.\b/0&/g;tr"
sed -r ":r;s/\b[0-9]{1,$((1))}\b\./0&/g;tr"
cause the statement to output:
1.01.01.1,Some Text Here
অতিরিক্ত হিসাবে, আমি প্রত্যাশা করি যে বিবৃতিতে যেমন পাঠ্য থাকলে আমার অতিরিক্ত সমস্যা হবে:
1.1.1.1,Some Number 1 Here
এটি একটি পূর্বাবস্থায় উপসংহার যে আমার সত্যিকারের সেড এবং এর সমস্ত জটিলতা শিখতে হবে। আমি এটি নিয়ে কাজ করছি, তবে আশা করি এই নির্দিষ্ট বিবৃতিটি কিছু সময়ের জন্য আমাকে সমস্যার কারণ হতে থাকবে। কোন সাহায্যের ব্যাপকভাবে প্রশংসা হবে।
সম্পাদনা: আমি একটি উপায় খুঁজে বের করেছি ... এই বিবৃতিটি আমি যা খুঁজছি তা মনে হচ্ছে, তবে এটি করার আরও একটি দুর্দান্ত উপায় হতে পারে।
sed -r ':r;s/\b[0-9]{1,1}\.\b/0&/;tr;:i;s/\b[0-9]{1,2},\b/0&/;ti;s/.//'
এছাড়াও, সিন্ট্যাক্টিক্যালি সমস্যাটি সৃষ্টি করবে যদি পাঠ্যে একই ধরণের সংখ্যার ফর্ম্যাট উপস্থিত হয় ... এর মতো:
1.1.1.1,Some Text Referring to Document XXX Heading 1.2.3
যা ক্ষেত্রে এটি ফলাফল:
1.01.01.001,Some Text Referring to Document XXX Heading 01.02.03
সমাধান আপনার সহায়তার জন্য এখানে সবাইকে ধন্যবাদ। আমি প্রথমে নীচে আমি গৃহীত উত্তর দিয়ে সমস্যার সমাধান করেছি। আমি বুঝতে পেরেছি যে সমাধানটি নীচের বাছাই করে আরও বড় সমাধানের অংশ হিসাবে পাইথনে স্থানান্তরিত করেছি:
def getPaddedKey(line):
keyparts = line[0].split(".")
keyparts = map(lambda x: x.rjust(5, '0'), keyparts)
return '.'.join(keyparts)
s=sorted(reader, key=getPaddedKey)
printf
(বা একটি printf
awk মধ্যে কল) আরো সহজবোধ্য হতে পারে।
sed -r ':r;s/\b[0-9]{1,1}\.\b/0&/;tr;:i;s/\b[0-9]{1,2},\b/0&/;ti;s/.//'
তবে, আরও সুন্দর মার্চিকেশন আছে কিনা তা আমি জানতে আগ্রহী।