আমরা যে কোনও একটি sedবা awkসম্পূর্ণরূপে সমস্যার সমাধান করতে ব্যবহার করতে পারি ।
সহ sed:
$ sed 's/^.\./0&/' file.txt
যখন &প্রতিকল্পন কমান্ড (প্রতিস্থাপন অংশে ঘটে s), ইনপুট লাইন যে কমান্ডের প্যাটার্ন অংশ মিলে যায় অংশ প্রসারিত করা হবে না।
নিয়মিত অভিব্যক্তির ^.\.অর্থ " ( ) একটি ল্যাবরেটরি ডট ( ) এর পরে একটি স্বেচ্ছাচারিত অক্ষর ( ) এর সাথে শুরু হওয়া সমস্ত লাইন মেলে^.\. "।
লাইনটি থাকলে 1.02.2017 23:40:00, প্যাটার্নটি মিলবে এবং লাইনের শুরুতে 1.প্রতিস্থাপন করা 01.হবে।
সহ awk:
awkপ্রশ্নে আংশিক কোড তৈরি করা ...
এটি যেমন বলা হয়েছে, ইনপুটটির প্রতিটি লাইনের দ্বিতীয় অক্ষরটি মুদ্রণ করবে:
$ awk '{ print substr($0, 2, 1) }' file.txt
আমরা substr($0, 2, 1)দ্বিতীয় চরিত্রটি ফিরে আসে এবং এটি শর্ত হিসাবে ব্যবহার করতে পারি:
$ awk 'substr($0, 2, 1) == "." { ... }' file.txt
কি মধ্যে যায় { ... }কোড যে prepends $0, একটি শূন্য দিয়ে যা বর্তমান লাইন বিষয়বস্তু, যদি পূর্ববর্তী শর্ত সত্য:
$ awk 'substr($0, 2, 1) == "." { $0 = "0" $0 }' file.txt
তারপরে আমাদের নিশ্চিত করা দরকার যে সমস্ত লাইন মুদ্রিত হয়েছে:
$ awk 'substr($0, 2, 1) == "." { $0 = "0" $0 } { print }' file.txt
শর্তটি substr($0, 2, 1) == "."অবশ্যই একটি নিয়মিত অভিব্যক্তিতে রূপান্তরিত হতে পারে ( sedসমাধানে আমরা যেমন ব্যবহার করেছি ঠিক তেমনই অভিব্যক্তিটি ব্যবহার করি ):
$ awk '/^.\./ { $0 = "0" $0 } { print }' file.txt
কিছু লোক যারা "খাটো সবসময়ই উন্নত" বলে মনে করেন তারা লিখতেন
$ awk '/^.\./ { $0 = "0" $0 } 1' file.txt
(এবং সম্ভবত বেশিরভাগ স্পেসও সরিয়ে ফেলবে awk '/^.\./{$0="0"$0}1' file.txt:)