[0-9] এর পরিবর্তে [এজে] সেডের সাথে কাজ করছে না


11

আমি একটি কমান্ডে কাজ করছি যা 0-9-এর সমস্ত অঙ্কের পরিবর্তে সেডে তাদের সংশ্লিষ্ট অক্ষরকে প্রতিস্থাপন করবে। আমি জানি যে আমি কিছু ভুল করছি, তবে সেড প্রতিস্থাপনের রেজেক্সকে স্ট্রিং আক্ষরিক ব্যতীত আর কিছুই ব্যাখ্যা করছে না।

আমি যে কমান্ডটি ব্যবহার করছি তা হ'ল sed -r 's/[0-9]/[A-J]/g' log > ~/output.txt

এটি আমার কাছে বেশ সরল মনে হলেও আমি এটি প্রায় এক ঘন্টা ধরে আটকে রেখেছি। আমি যে আউটপুটটি পেয়েছি তা "[এজে]" স্ট্রিংয়ের সাথে 0-9 প্রতিস্থাপন করে

উত্তর:


38

প্রতিস্থাপনে, কেবল ম্যাচ (বাম-হাত) একটি নিয়মিত প্রকাশ। প্রতিস্থাপন বেশী বা কম মাত্র একটি আক্ষরিক স্ট্রিং (কিছু ব্যাকস্ল্যাশ প্রসারের) - এটা হচ্ছে একটি Regex না

আপনি লিপ্যন্তর না প্রতিকল্পন চান, তাই প্রতিস্থাপন sসঙ্গে y:

echo 34031445 | sed 'y/0123456789/ABCDEFGHIJ/'

সেড এর মধ্যে ব্যাপ্তি ব্যবহার করতে পারে না y, তবে পার্ল এটি করতে পারে:

echo 34031445 | perl -pe 'y/0-9/A-J/'

বা কেবল ব্যবহার করুন tr:

echo 34031445 | tr 0-9 A-J

12
একমত। trকাজের জন্য সবচেয়ে সহজ এবং সম্ভবত দ্রুততম সরঞ্জাম।
sdkks
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.