আমি সেডে হোয়াইটস্পেসের সাথে কীভাবে মিল করব? আমার ডেটাতে আমি 3+ পরবর্তী সমস্ত সাদা স্পেস অক্ষর (ট্যাব স্পেস) এর সাথে সব মিলিয়ে 2 স্পেস দিয়ে প্রতিস্থাপন করতে চাই। কিভাবে এই কাজ করা যেতে পারে?
আমি সেডে হোয়াইটস্পেসের সাথে কীভাবে মিল করব? আমার ডেটাতে আমি 3+ পরবর্তী সমস্ত সাদা স্পেস অক্ষর (ট্যাব স্পেস) এর সাথে সব মিলিয়ে 2 স্পেস দিয়ে প্রতিস্থাপন করতে চাই। কিভাবে এই কাজ করা যেতে পারে?
উত্তর:
চরিত্র শ্রেণী \s
হোয়াইটস্পেস অক্ষর ম্যাচ হবে <tab>
এবং <space>
।
উদাহরণ স্বরূপ:
$ sed -e "s/\s\{3,\}/ /g" inputFile
দুটি স্পেস সহ কমপক্ষে 3 সাদা স্পেসগুলির প্রতিটি ক্রমকে প্রতিস্থাপন করবে।
রেকর্ড : পসিক্স কমপ্লায়েন্সের জন্য, [[:space:]]
পরিবর্তে অক্ষর শ্রেণিটি ব্যবহার করুন \s
, যেহেতু পরেরটি জিএনইউ সেড এক্সটেনশন। জন্য POSIX বিশেষ উল্লেখ দেখুন কিন্তু এবং BREs
sed
আমাকে ব্যবহার করতে হয়েছিল [[:space:]]
কারণ \s
আমার পক্ষে কাজ করে না। সম্ভবত \s
একটি জিএনইউ সেড এক্সটেনশন?
[[:space:]
ব্যবহার করতে পারে [[:blank:]]
যা কেবলমাত্র অনুভূমিক ট্যাব এবং স্পেসগুলির সাথে মেলে (তবে কোনও নতুন লাইন, উল্লম্ব ট্যাব ইত্যাদি নয়)।
এটি MacOS 10.8 এ কাজ করে:
sed -E "s/[[:space:]]+/ /g"
sed "s/[[:space:]]\+/ /g"
এক বা একাধিক স্পেস মেলাতে চান ।
-E
পতাকাটিকেও সমর্থন করে ।
সেডের কিছু পুরানো সংস্করণ শ্বেত স্পেসের সাথে ম্যাচিং টোকেন হিসাবে স্বীকৃত হতে পারে না। সেক্ষেত্রে আপনি '[XZ] [XZ] *' এর সাথে এক বা একাধিক স্পেস এবং ট্যাবগুলির ক্রম মেলাতে পারেন যেখানে এক্স একটি স্থান এবং জেড একটি ট্যাব।
sed 's/[ \t]*/"space or tab"/'
sed
কোনও সিস্টেমে কোনও সংস্করণে কাজ করার গ্যারান্টিযুক্ত ? যদি তা না হয় তবে এটি অন্যান্য উত্তরগুলির মতো একই ফ্যাশনে কোথায় কাজ করে তা উল্লেখ করার মতো হতে পারে, কেবলমাত্র আমরা সীমাবদ্ধতাগুলি জানি এবং যেখানে এর উদ্দেশ্য ফলাফল হতে পারে না।