উইন্ডোজ জন্য কোর্টিলিল থেকে ট্র ব্যবহার


1

আমি স্ক্রিপ্টে উইন্ডোতে \\ \\ থেকে ফাইলের বিষয়বস্তু রূপান্তর করতে হবে। তাই আমি Coreutils পেয়েছিলাম এবং tr \ \\ & lt ব্যবহার করার চেষ্টা করেছি; file_in & gt; উইন্ডোজ সিএমডি ফাইল_আউট, কিন্তু file_out \ \ পরিবর্তিত হচ্ছে \ পরিবর্তে \। ফাইলটিতে LFs (\ n) এবং CRLF (\ r \ n) রয়েছে তবে তাদের অপরিবর্তিত থাকা দরকার। আমি কি করার চেষ্টা করার জন্য TR ব্যবহার করার জন্য বিদ্যমান উপায় আছে?

উত্তর:


0

অন্যদের হিসাবে উল্লেখ আছে, tr শুধুমাত্র অন্য একক চরিত্র মধ্যে একটি একক চরিত্র রূপান্তরিত।

আপনি আমার ব্যবহার করতে পারেন JREPL.BAT নিয়মিত অভিব্যক্তি টেক্সট প্রসেসিং ইউটিলিটি সহজে এবং দক্ষতার সাথে আপনার সমস্যার সমাধান। এটি খাঁটি স্ক্রিপ্ট (হাইব্রিড জ্যাসিপি / ব্যাচ) যা এক্সপি থেকে অন্য কোনও উইন্ডোজ মেশিনে নেটিভভাবে চালায়।

jrepl "\" "\\" /l /f file.txt /o -

উপরে \ r \ n টারমিনারগুলির সাথে প্রতিটি লাইন লিখবে।

আপনি মূল লাইন terminators সংরক্ষণ করতে হবে, তাহলে আপনি ব্যবহার করতে পারেন /M মাল্টি লাইন বিকল্প

jrepl "\" "\\" /l /m /f file.txt /o -

উপরের কমান্ড ব্যবহার করুন /L আক্ষরিক সুইচ। বিনা /L, কমান্ডটি নিয়মিত অভিব্যক্তি হিসাবে অনুসন্ধান শব্দটিকে ব্যাখ্যা করে, তাই আপনাকে এটি করতে হবে:

jrepl "\\" "\\" /m /f file.txt /o -

ব্যবহার call jrepl যদি আপনি একটি ব্যাচ স্ক্রিপ্টের মধ্যে কমান্ডটি ব্যবহার করেন।

আগ্রহজনকভাবে, জেআরপিএল একটি আছে /T অনুবাদ বিকল্প যা ইউনিক্সের সাথে একইভাবে কাজ করে tr কমান্ড। কিন্তু এটি আপনার পরিস্থিতির কোন ব্যবহার নয়।

ব্যবহার jrepl /? অন্তর্নির্মিত ডকুমেন্টেশন দেখতে। আউটপুট পাইপ more আপনি এক সময় আউটপুট এক স্ক্রিন সীমাবদ্ধ করতে চান। আমি প্রয়োজন নেই more কারণ আমার কনসোল উইন্ডোটি বড় আউটপুট বাফারের সাথে কনফিগার করা হয়েছে যাতে আমি পূর্ববর্তী আউটপুট দেখতে স্ক্রোল করতে পারি।


0

Tr শুধুমাত্র একক চরিত্র অনুবাদ। একাধিক গৃহস্থালি দিয়ে এটি প্রতিস্থাপন করতে এটি sed ব্যবহার করতে হবে। এটা GnuWin32- উইন্ডোজের জন্য লিনাক্স সরঞ্জামের পোর্টে পাওয়া যেতে পারে। প্রতিস্থাপন করতে \ সঙ্গে \\ আপনি ব্যবহার করা উচিত f.e.

  cat file | sed "s_\\_\\\\_g" 

গুলি আলাদা মোডের জন্য, g গ্লোবালের জন্য দাঁড়িয়েছে - ডিফল্ট সিলে সারিতে শুধুমাত্র প্রথম ঘটনাটি প্রতিস্থাপন করে। \\\\ পরিবর্তে \\ এবং \\\\\\\ এর \\\\ কারণ ব্যাকস্ল্যাশ অতিরিক্ত ব্যাকস্ল্যাশ ব্যবহার করে পালিয়ে যেতে হবে।


Cygwin মধ্যে Gn সংস্করণ 4.2.2 মধ্যে চেষ্টা, এবং ব্যর্থ হয়। $ cat ff | sed "s_\\_\\\\_g" sed: -e expression #1, char 8: unterminated s 'কমান্ড' কিন্তু একক উদ্ধৃতি দিয়ে কাজ করে।
barlop

0

tr পৃথক অক্ষর সঙ্গে পুলিশ, এটা সত্যিই overlap আছে, যদিও স্ট্রিং সঙ্গে চুক্তি করে না।

আপনি একক চরিত্রের একাধিক ঘটনার প্রতিস্থাপন করতে পারেন, এক ঘটনার সাথে (প্রতিস্থাপন \\ সঙ্গে \ ), একটি বিকল্প এটি 'সঙ্কুচিত' কল কিন্তু আপনি অন্য উপায় চাই। তত্ত্বের মধ্যে কেউ বলতে পারে যে এটি একটি স্বতন্ত্র চরিত্রের সাথে জড়িত, তা সত্ত্বেও, tr তা করতে পারে না, তার একটি অক্ষর দেওয়ার বিকল্প নেই এবং এটি কতক্ষণ প্রদর্শিত হবে তা প্রকাশ করার কোন বিকল্প নেই। এটি যে সংকীর্ণ চরিত্র বিকল্প কিন্তু একটি পুনরাবৃত্তি চরিত্র বিকল্প নেই।

আপনি sed ব্যবহার করতে পারেন, আপনি ডবল কোট পরিবর্তে একক উদ্ধৃতি ব্যবহার করতে পারেন

 $ echo '\' | sed 's_\\_\\\\_g'
\\

অথবা sed 's/a/b/g' filename

তার s কমান্ড সঙ্গে sed ​​সঙ্গে সিনট্যাক্স, হয় sed "s/find/replace/" এবং একটি নির্বাণ g শেষে সংশোধনকারী এটি নিশ্চিত করবে যে এটি শুধুমাত্র প্রথমটিতেই থামবে না, এটি প্রতি ঘটনার প্রতিস্থাপন করবে। sed 's/find/replace/g' সাধারণত মানুষ ব্যবহার / আপনি _ আই.ই. ব্যবহার করতে পারেন। s_a_b_g আপনি জি / একটি পরে না।

জন্য \r\n এবং \n যে sed ​​লাইন এটা প্রভাবিত করবে না। \r\n একটি প্রকৃত ব্যাকস্ল্যাশের সাথে সংরক্ষণ করা হয় না, এটি প্রতিনিধিত্বকারী অ্যাসিসি কোডগুলির জন্য বাইনারি দিয়ে সংরক্ষণ করা হয়। 13 জন্য \r এবং 10 জন্য \n একটি Ascii টেবিল তাকান এবং আপনি যে দেখতে চাই।

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