আমি উইন্ডোজ কমান্ড লাইন ( সেমিডি.এক্সি ) ব্যবহার করে প্রোগ্রামিয়ালি ফাইল সামগ্রী সম্পাদনা করতে চাই । * স্নো রয়েছে sed এই কাজের জন্য। উইন্ডোতে কোন কার্যকর নেটিভ সমতুল্য আছে?
আমি উইন্ডোজ কমান্ড লাইন ( সেমিডি.এক্সি ) ব্যবহার করে প্রোগ্রামিয়ালি ফাইল সামগ্রী সম্পাদনা করতে চাই । * স্নো রয়েছে sed এই কাজের জন্য। উইন্ডোতে কোন কার্যকর নেটিভ সমতুল্য আছে?
উত্তর:
আজ পাওয়ারশেল আমাকে বাঁচিয়েছে।
কারণ grep
আছে:
get-content somefile.txt | where { $_ -match "expression"}
অথবা
select-string somefile.txt -pattern "expression"
এবং জন্য sed
আছে:
get-content somefile.txt | %{$_ -replace "expression","replace"}
আরও তথ্যের জন্য জয়ন নাবুলিসিস ব্লগ এন্ট্রি দেখুন ।
sed
(এবং এটি সম্পর্কিত) ইউনিক্স কমান্ডের বেশ কয়েকটি প্যাকেজের মধ্যে রয়েছে।
sed
, grep
বাক্সের যদিও ইত্যাদি আউট।-z
বিকল্প সরবরাহ করেআপনি কিছু ইনস্টল করতে না চান এবং আপনার সিস্টেম একটি উইন্ডোজ সার্ভার এক নয়, তাহলে আপনি পারে যে জন্য একটি স্ক্রিপ্টিং ভাষা (VB স্ক্রিপ্ট যেমন) ব্যবহার করুন। নীচে এটিতে একটি স্থূল, অফ-দ্য কাফ স্ট্যাব রয়েছে। আপনার কমান্ড লাইন দেখতে হবে
cscript //NoLogo sed.vbs s/(oldpat)/(newpat)/ < inpfile.txt > outfile.txt
যেখানে ওল্ডপাট এবং নিউপ্যাট হ'ল মাইক্রোসফ্ট ভিবিএসক্রিপেট রেজেেক্স নিদর্শন । স্পষ্টতই আমি কেবল বিকল্প কমান্ডটি প্রয়োগ করেছি এবং কিছু জিনিস ধরে নিয়েছি, তবে আপনি এটি আরও বুদ্ধিমান হতে এবং sed
কমান্ড-লাইনটি আরও বুঝতে পারবেন ।
Dim pat, patparts, rxp, inp
pat = WScript.Arguments(0)
patparts = Split(pat,"/")
Set rxp = new RegExp
rxp.Global = True
rxp.Multiline = False
rxp.Pattern = patparts(1)
Do While Not WScript.StdIn.AtEndOfStream
inp = WScript.StdIn.ReadLine()
WScript.Echo rxp.Replace(inp, patparts(2))
Loop
আপনি যদি কিছু ইনস্টল করতে না চান (আমি ধরে নিই যে আপনি কোনও সমাধান / প্রোগ্রাম / ইত্যাদিতে স্ক্রিপ্টটি যুক্ত করতে চান যা অন্যান্য মেশিনে চালিত হবে), আপনি একটি ভিবিএস স্ক্রিপ্ট তৈরি করার চেষ্টা করতে পারেন (যাক, বলুন, প্রতিস্থাপন.vbs):
Const ForReading = 1
Const ForWriting = 2
strFileName = Wscript.Arguments(0)
strOldText = Wscript.Arguments(1)
strNewText = Wscript.Arguments(2)
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(strFileName, ForReading)
strText = objFile.ReadAll
objFile.Close
strNewText = Replace(strText, strOldText, strNewText)
Set objFile = objFSO.OpenTextFile(strFileName, ForWriting)
objFile.Write strNewText
objFile.Close
এবং আপনি এটি এভাবে চালান:
cscript replace.vbs "C:\One.txt" "Robert" "Rob"
যা "বিল তাঁতি" দ্বারা সরবরাহিত সেড সংস্করণের অনুরূপ, তবে আমি মনে করি এটি বিশেষ ('> </) অক্ষরের ক্ষেত্রে আরও বন্ধুত্বপূর্ণ।
বিটিডব্লিউ, আমি এটি লিখিনি, তবে আমি কোথা থেকে পেয়েছি তা মনে করতে পারছি না।
নেই সুপার ব্যান্ডউইডথ sed এর একটি বর্ধিত সংস্করণ। উইন্ডোজের জন্য এটি একটি স্বতন্ত্র .exe, কমান্ড লাইন থেকে চালানোর উদ্দেশ্যে।
> (Get-content file.txt) | Foreach-Object {$_ -replace "^SourceRegexp$", "DestinationString"} | Set-Content file.txt
এটি আচরণ
sed -i 's/^SourceRegexp$/DestinationString/g' file.txt
আপনি পাওয়ারশেল চেষ্টা করতে পারেন। আছে বিষয়বস্তু পাওয়ার- এবং সেট বিষয়বস্তু আপনি ব্যবহার করতে পারে যে commandlets বিল্ড।
sed
রাখে ;-)। -replace
অপারেটর সম্ভবত একটি ভাল পরামর্শ।
Fart.exe চেষ্টা করুন। এটি একটি অনুসন্ধান-প্রতিস্থাপন-পাঠ্য ইউটিলিটি যা কমান্ড ব্যাচ প্রোগ্রামগুলিতে ব্যবহার করা যেতে পারে।
আপনি সাইগউইন ইনস্টল করতে পারেন ( http://www.cygwin.com/ ) এবং সেখান থেকে সেড ব্যবহার করতে পারেন।
আমি ব্যবহার Cygwin । আমি প্রচুর লোকের মধ্যে দৌড়েছি যারা বুঝতে পারে না যে আপনি যদি নিজের পথের উপর সাইগউইন বাইনারি রাখেন তবে আপনি সেগুলি উইন্ডোজ কমান্ড শেলের মধ্যে থেকে ব্যবহার করতে পারেন। আপনাকে সাইগউইনের বাশ চালাতে হবে না।
আপনি মাইক্রোসফ্ট থেকে পাওয়া ইউনিক্সের জন্য উইন্ডোজ পরিষেবাদিগুলি অনুসন্ধান করতে পারেন (তবে কেবলমাত্র পেশাদার এবং উইন্ডোজের উপরের সংস্করণগুলিতে)।
এডলিন বা সম্পাদনা
এছাড়াও ইউনিক্সের জন্য উইন্ডোজ পরিষেবা রয়েছে যা উইন্ডোজের জন্য অনেকগুলি ইউনিক্স সরঞ্জাম নিয়ে আসে। http://technet.microsoft.com/en-us/interopmigration/bb380242.aspx
আপডেট 12/7/12 উইন্ডোজ 2003 আর 2, উইন্ডোজ 7 এবং সার্ভার 2008, ইত্যাদিতে উপরেরগুলিকে ইউনিক্স-ভিত্তিক অ্যাপ্লিকেশনগুলির জন্য সাবসিস্টেম দ্বারা প্রতিস্থাপন করা হয়েছে (এসইউএ) অ্যাড-অন হিসাবে। তবে আপনাকে ইউটিলিটিগুলি ডাউনলোড করতে হবে: http://www.microsoft.com/en-us/download/details.aspx?id=2391
আপনি জিএনইউ সরঞ্জামগুলিতে দেখতে পারেন , তারা উইন্ডোতে সেড সরবরাহ করে (অন্যান্য জিনিসের মধ্যে)।
উইন্ডোজের জন্য একটি হেল্পার ব্যাচের ফাইল বলা হয় repl.bat
যার মধ্যে এসইডির অনেকগুলি দক্ষতা doesn't require any additional download
বা ইনস্টলেশন রয়েছে। এটা একটা সংকর ব্যাচ ফাইল যে ব্যবহার Jscript
বৈশিষ্ট্য প্রয়োগ করতে এবং তাই হয় swift
, এবং doesn't suffer from the usual poison characters
ব্যাচ প্রসেসিং এবং হ্যান্ডলগুলি আরাম সঙ্গে ফাঁকা রেখার।
ডাউনলোড করুন repl
- https://www.rodbox.com/s/qidqwztmetbvklt/repl.bat
লেখক স্ট্যাক ওভারফ্লো এবং ডাস্টিপস.কম থেকে @ ডিবেনহ্যাম
অপর একটি সহায়ক ব্যাচ ফাইল যা findrepl.bat
উইন্ডোজ ব্যবহারকারীকে তার বেশিরভাগ ক্যাপাবিলিটি দেয় GREP
এবং এটিও Jscript
একটি হাইব্রিড ব্যাচের ফাইলের উপর ভিত্তি করে । এটি repl.bat এর সুবিধাগুলি ভাগ করে দেয়
findrepl
থেকে ডাউনলোড করুন - https://www.rodbox.com/s/rfdldmcb6vwi9xc/findrepl.bat
লেখক হ'ল স্ট্যাক ওভারফ্লো এবং ডাস্টিপস.কম থেকে @Aacini
যতদূর আমি জানি সেডের মতো কিছুই উইন্ডোতে বান্ডিল নয়। যাইহোক, সিডউইনের অংশ হিসাবে আপনি যদি একটি সম্পূর্ণ পসিক্স সাবসিস্টেম চান, বা উইন্ড 32 নেটিভ এক্সিকিউটেবল হিসাবে আপনি যদি কমান্ড লাইনে কেবল সেড চালাতে চান তবে উইন্ডোজের জন্য সেড বিভিন্ন ধরণের রূপে উপলব্ধ।
উইন্ডোজের জন্য শেড (GnuWin32 প্রকল্প)
যদি এটি উইন্ডোতে নেটিভ হওয়ার প্রয়োজন হয় তবে আমি কেবলমাত্র অন্য কোনও জিনিসটির পরামর্শ দিতে পারি এটি হ'ল ভিবিএস স্ক্রিপ্টের মতো অ্যাড-অনগুলি দ্বারা উইন্ডোজ দ্বারা সমর্থিত একটি স্ক্রিপ্টিং ভাষা ব্যবহার করা।
আমার একটি সেড সরঞ্জামের দরকার ছিল যা উইন্ডোজ সেমিডি.এক্সই প্রম্পটের জন্য কাজ করে। এরিক Pement এর পোর্ট sed একটি একক ডস .exe করতে আমার জন্য কাজ করে মহান।
এটি বেশ ভাল নথিভুক্ত ।