অনেক সহজ উপায় ব্যবহার করা হয় tr
$ tr '_' ',' < input.csv | tr -d '"'
1,1,0,0,76
1,1,0,0,77
1,1,0,0,78
এটি যেভাবে কাজ করে তাতে tr
দুটি আর্গুমেন্ট লাগে - প্রতিস্থাপনের জন্য অক্ষরের সেট এবং তাদের প্রতিস্থাপন। এই ক্ষেত্রে আমাদের কাছে কেবলমাত্র 1 টি অক্ষরের সেট রয়েছে। আমরা input.csv
ইনপুট tr
এর স্টিডিন স্ট্রিমটি <
শেল অপারেটরের মাধ্যমে পুনর্নির্দেশ করি এবং ফলস্বরূপ আউটপুটটি tr -d '"'
ডাবল উদ্ধৃতি মুছতে পাইপ করি ।
তবে awk
এটিও করতে পারে।
$ cat input.csv
"1_1_0_0_76"
"1_1_0_0_77"
"1_1_0_0_78"
$ awk '{gsub(/_/,",");gsub(/\"/,"")};1' input.csv
1,1,0,0,76
1,1,0,0,77
1,1,0,0,78
এই কাজ করার উপায়টি কিছুটা পৃথক: awk প্রতিটি ফাইল লাইন এক এক করে লাইন পড়ে, প্রতিটি ইন-লাইন স্ক্রিপ্ট /Pattern match/{ codeblock}/Another pattern/{code block for this pattern}
। এখানে আমাদের কোনও প্যাটার্ন নেই, সুতরাং এর অর্থ প্রতিটি লাইনের কোডব্লক চালানো। gsub()
ফাংশনটি একটি লাইনের মধ্যে বিশ্বব্যাপী প্রতিস্থাপনের জন্য ব্যবহৃত হয়, সুতরাং আমরা এটি কমা দিয়ে আন্ডারস্কোরগুলি প্রতিস্থাপন করতে এবং নাল স্ট্রিং (কার্যকরভাবে চরিত্রটিকে মোছার) সাথে ডাবল উদ্ধৃতিগুলি ব্যবহার করতে ব্যবহার করি। 1
কোড ব্লক, যা অক্ষমতা কেবল লাইন মুদ্রণ করার জন্য অনুপস্থিত সঙ্গে প্যাটার্ন ম্যাচ জায়গা হয়; অন্য কথায় কোডব্লকটি gsub()
কাজটি করে এবং 1
ফলাফলটি মুদ্রণ করে।
>
কোনও নতুন ফাইলে আউটপুট প্রেরণে শেল পুনঃনির্দেশ ( ) ব্যবহার করুন:
awk '{gsub(/_/,",");gsub(/\"/,"")};1' input.csv > output.csv