Cmd.exe এর মতো ইউটিলিটির মতো কোনও সেড আছে কি? [বন্ধ]


149

আমি উইন্ডোজ কমান্ড লাইন ( সেমিডি.এক্সি ) ব্যবহার করে প্রোগ্রামিয়ালি ফাইল সামগ্রী সম্পাদনা করতে চাই । * স্নো রয়েছে sed এই কাজের জন্য। উইন্ডোতে কোন কার্যকর নেটিভ সমতুল্য আছে?


1
"দেশি" বলতে কী বোঝেন ??? Cmd.exe এ কাজ করার জন্য ইনস্টলযোগ্য, বা যা কিছু ইনস্টলেশন ছাড়াই কাজ করতে চান? যদি পূর্বের হয় তবে দেখুন GnuWin32 নীচে অস্বীকার করেছেন; যদি পরেরটি হয়, না উইন্ডোজের জন্য কোনও প্রাক ইনস্টলড নেটিভ সেড নেই।
মাইকেল পাউলুকোনিস

6
নেটিভ দ্বারা আমার বোঝানো সমাধান যা অতিরিক্ত স্টাফ ইনস্টল না করে সমস্ত উইন্ডোতে চলে।
জাকুব Šturc

1
Cmd.exe ছেড়ে যান এবং তার পরিবর্তে পাওয়ারশেল ব্যবহার করুন।
বিল_সেটওয়ার্ট


আপনি যদি কেবল কোনও ফাইল থেকে নির্দিষ্ট লাইনগুলি মুছতে চান তবে FIND / ব্যবহার করবেন?
জন হেন্কেল

উত্তর:


117

আজ পাওয়ারশেল আমাকে বাঁচিয়েছে।

কারণ grepআছে:

get-content somefile.txt | where { $_ -match "expression"}

অথবা

select-string somefile.txt -pattern "expression"

এবং জন্য sedআছে:

get-content somefile.txt | %{$_ -replace "expression","replace"}

আরও তথ্যের জন্য জয়ন নাবুলিসিস ব্লগ এন্ট্রি দেখুন


12
এ ছাড়া: আপনি যদি এটিকে সাধারণ সেন্টিমিডি থেকে কল করতে চান তবে কেবল @ পাওয়ারশেল -কম্যান্ড "গেট-কন্টেন্ট ..." এ এটি করুন। কেবলমাত্র সতর্কতাই হ'ল আপনাকে অবশ্যই উদ্ধৃতি চিহ্নগুলি এড়াতে হবে: ... -কমন্ড "get-content ... expression" এক্সপ্রেশন \ ", ..."
তারাক

1
@ তারেক আফয়ার, আপনি আপনার কমান্ডে একক উদ্ধৃতি ব্যবহার করতে পারেন এবং পরিবর্তে কমান্ডটি উদ্ধৃত করতে ডাবল উদ্ধৃতি ব্যবহার করতে পারেন

2
আমি আজ একটি ফাইলটিতে এটি চেষ্টা করেছি নির্দিষ্ট জায়গাগুলির উদ্ধৃতিগুলির মধ্যে কিছু জিনিস সরিয়ে ফেলতে, কেবল এটি আবিষ্কার করতে যে আউটপুটটি মূলের চেয়ে প্রায় দ্বিগুণ বড় ফাইল was কারণটি মনে হয়েছিল যে এই পদ্ধতিটি ফাইলগুলিতে "\ n instead" পরিবর্তে "\ r \ n" ব্যবহার করার জন্য ফাইলগুলিতে নতুন লাইনের হাতল দেওয়ার পদ্ধতি পরিবর্তন করেছিল।
ব্যবহারকারী 132278

1
\ R \ n এর কারণে দ্বিগুণ হওয়ার অর্থ বোঝানো যায় যে আপনার ফাইলটি সম্পূর্ণ নতুন লাইনের সমন্বয়ে তৈরি হয়েছিল। এখানে আসল কারণ: এনকোডিং
অমিত নাইডু

2
@ এবং-ব্রি (গেট-কনটেন্ট সি: \ টেম্প \ টেস্ট.টেক্সট) re স্থান (('[এমওয়াইআইডি]', 'মাইভ্যালু') | সেট-সামগ্রী সি: \ অস্থায়ী \ test.txt
এএফপি_৫৫৫

94

sed (এবং এটি সম্পর্কিত) ইউনিক্স কমান্ডের বেশ কয়েকটি প্যাকেজের মধ্যে রয়েছে।

আপনি কিছু ইনস্টল করতে না চান এবং আপনার সিস্টেম একটি উইন্ডোজ সার্ভার এক নয়, তাহলে আপনি পারে যে জন্য একটি স্ক্রিপ্টিং ভাষা (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

1
এটি হ'ল আমি যা চাই তা ঠিক নয় তবে ভিবিএসের উপর নির্ভরতা হ'ল সবচেয়ে হালকা সমাধান।
জাকুব Šturc

7
GnuWin32 হ'ল দেশীয় সমাধান, যদি স্থানীয়ভাবে আপনি বলতে চান "সাধারণ" উইন্ডো পরিবেশে (সাইগউইনের বিপরীতে) চালানোর জন্য ডিজাইন করা। তাদের চেষ্টা করে দেখুন এবং আপনি যে প্রতিটি উইন্ডোজ সিস্টেমে ব্যবহার করছেন সেগুলি সেগুলি থেকে শুরু করা আশা করা শুরু করবেন start !!!
মাইকেল পাউলুকোনিস

3
আমার ক্ষেত্রে কাজ করে! এছাড়াও, "// NoLogo" সিসক্রিপ্ট বিকল্পটি ভুলে যাবেন না।
মার্কো ডুমিক

4
এটি যদি "অফ-দ্য কাফ" হয় তবে আপনার অন্যান্য কোডটি কেমন দেখাচ্ছে তা অবাক করুন! আশ্চর্যজনক, ধন্যবাদ
সাবুনকু

2
অনুরূপ একটি রেজেক্স অনুসন্ধান এবং প্রতিস্থাপন ইউটিলিটি জেএসক্রিপ্টের সাহায্যে করা যেতে পারে। ভিবিএস স্ক্রিপ্টের উপরে জেএসক্রিপ্টের সুবিধাটি হ'ল এটি সহজেই একটি স্ক্রিপ্টে ব্যাচের সাথে সংযুক্ত করা যায়, ব্যাচ বা কমান্ড লাইন প্রসঙ্গে ইউটিলিটিটি সহজতর করে তোলে। REPL.BAT নামে একটি শক্তিশালী হাইব্রিড জেএসক্রিপ্ট / ব্যাচের ইউটিলিটি উপলব্ধ । এটিতে অনেক কমান্ড লাইনের বিকল্প রয়েছে। সম্পূর্ণ ডকুমেন্টেশন স্ক্রিপ্ট মধ্যে এম্বেড করা হয়। এটিতে অবশ্যই পুরো সিড সামর্থ্য নেই, তবে তবুও এটি বেশ শক্তিশালী।
dbenham


17

আপনি যদি কিছু ইনস্টল করতে না চান (আমি ধরে নিই যে আপনি কোনও সমাধান / প্রোগ্রাম / ইত্যাদিতে স্ক্রিপ্টটি যুক্ত করতে চান যা অন্যান্য মেশিনে চালিত হবে), আপনি একটি ভিবিএস স্ক্রিপ্ট তৈরি করার চেষ্টা করতে পারেন (যাক, বলুন, প্রতিস্থাপন.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"

যা "বিল তাঁতি" দ্বারা সরবরাহিত সেড সংস্করণের অনুরূপ, তবে আমি মনে করি এটি বিশেষ ('> </) অক্ষরের ক্ষেত্রে আরও বন্ধুত্বপূর্ণ।

বিটিডব্লিউ, আমি এটি লিখিনি, তবে আমি কোথা থেকে পেয়েছি তা মনে করতে পারছি না।



8
> (Get-content file.txt) | Foreach-Object {$_ -replace "^SourceRegexp$", "DestinationString"} | Set-Content file.txt

এটি আচরণ

sed -i 's/^SourceRegexp$/DestinationString/g' file.txt

1
এটি পুরোপুরি কাজ করে। দ্রষ্টব্য: "গেট-কনটেন্ট" -এর প্রথম বন্ধনীগুলি নিশ্চিত করে যে "সেট-সামগ্রী" কল করার পরে ফাইলটি আর ব্যবহার হবে না।
কাফু

সেমিডিতেও কি তেমন কিছু সম্ভব? বুঝতে পেরে এটি কেবল পাইডব্লিউয়ের জন্য
ফেরোওও

'সোর্সরেজএক্সপ্যাক্স' কোনও সম্ভাব্য রেইজেক্স দ্বারা প্রতিস্থাপিত হতে হবে? এটি কি সত্যই পাওয়ার শেলটিতে কাজ করে?
স্কোরজ

7

আপনি পাওয়ারশেল চেষ্টা করতে পারেন। আছে বিষয়বস্তু পাওয়ার- এবং সেট বিষয়বস্তু আপনি ব্যবহার করতে পারে যে commandlets বিল্ড।


4
এগুলি সম্ভবত পাওয়ারশেলের দুটি জিনিস যা কমপক্ষে অবদান sedরাখে ;-)। -replaceঅপারেটর সম্ভবত একটি ভাল পরামর্শ।
জোয়

7

Fart.exe চেষ্টা করুন। এটি একটি অনুসন্ধান-প্রতিস্থাপন-পাঠ্য ইউটিলিটি যা কমান্ড ব্যাচ প্রোগ্রামগুলিতে ব্যবহার করা যেতে পারে।

http://sourceforge.net/projects/fart-it/


আমি যদি সত্যিই শেলের মতো * নিক্স ব্যবহার করতে না পারি তবে আমি এটিকে পছন্দ করি কারণ এটি কোনও নির্ভরতা ছাড়াই একটি ছোট স্ট্যান্ডলোন এক্স exe
কিবেন

6

আপনি সাইগউইন ইনস্টল করতে পারেন ( http://www.cygwin.com/ ) এবং সেখান থেকে সেড ব্যবহার করতে পারেন।


6

আমি ব্যবহার Cygwin । আমি প্রচুর লোকের মধ্যে দৌড়েছি যারা বুঝতে পারে না যে আপনি যদি নিজের পথের উপর সাইগউইন বাইনারি রাখেন তবে আপনি সেগুলি উইন্ডোজ কমান্ড শেলের মধ্যে থেকে ব্যবহার করতে পারেন। আপনাকে সাইগউইনের বাশ চালাতে হবে না।

আপনি মাইক্রোসফ্ট থেকে পাওয়া ইউনিক্সের জন্য উইন্ডোজ পরিষেবাদিগুলি অনুসন্ধান করতে পারেন (তবে কেবলমাত্র পেশাদার এবং উইন্ডোজের উপরের সংস্করণগুলিতে)।


4

এডলিন বা সম্পাদনা

এছাড়াও ইউনিক্সের জন্য উইন্ডোজ পরিষেবা রয়েছে যা উইন্ডোজের জন্য অনেকগুলি ইউনিক্স সরঞ্জাম নিয়ে আসে। 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


5
উইন্ডোজের -৪-বিট সংস্করণে উভয়ের আর উপস্থিতি নেই।
জোয়


3

উইন্ডোজের জন্য একটি হেল্পার ব্যাচের ফাইল বলা হয় 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


Repl এর জন্য ড্রপবক্স লিঙ্কটি নিচে রয়েছে। আপনার কি কোনও গৌণ লিঙ্ক আছে?
বিশাল আনন্দ

2

যতদূর আমি জানি সেডের মতো কিছুই উইন্ডোতে বান্ডিল নয়। যাইহোক, সিডউইনের অংশ হিসাবে আপনি যদি একটি সম্পূর্ণ পসিক্স সাবসিস্টেম চান, বা উইন্ড 32 নেটিভ এক্সিকিউটেবল হিসাবে আপনি যদি কমান্ড লাইনে কেবল সেড চালাতে চান তবে উইন্ডোজের জন্য সেড বিভিন্ন ধরণের রূপে উপলব্ধ।

উইন্ডোজের জন্য শেড (GnuWin32 প্রকল্প)

যদি এটি উইন্ডোতে নেটিভ হওয়ার প্রয়োজন হয় তবে আমি কেবলমাত্র অন্য কোনও জিনিসটির পরামর্শ দিতে পারি এটি হ'ল ভিবিএস স্ক্রিপ্টের মতো অ্যাড-অনগুলি দ্বারা উইন্ডোজ দ্বারা সমর্থিত একটি স্ক্রিপ্টিং ভাষা ব্যবহার করা।


1

সাইগউইন কাজ করে তবে এই ইউটিলিটিগুলিও উপলব্ধ। এগুলি কেবল আপনার ড্রাইভে প্লপ করুন, ডিরেক্টরিটি আপনার পথে রাখুন এবং আপনার অনেক বন্ধুত্বপূর্ণ ইউনিক্স ইউটিলিটি রয়েছে। লাইটওয়েট আইএমএইচও যে সাইগউইন (যদিও এটি ঠিক পাশাপাশি কাজ করে)।


0

আমার একটি সেড সরঞ্জামের দরকার ছিল যা উইন্ডোজ সেমিডি.এক্সই প্রম্পটের জন্য কাজ করে। এরিক Pement এর পোর্ট sed একটি একক ডস .exe করতে আমার জন্য কাজ করে মহান।

এটি বেশ ভাল নথিভুক্ত


1
প্রশ্নটি উইন্ডোজ সম্পর্কে (
সেমিডি.এক্সএই

@ র্যোহোই: আমি দেখছি। যদিও এই উত্তরগুলির কারও কারও পক্ষে কার্যকর হতে পারে, তবে আমি সম্মত হই যে প্রশ্নটি নিজেই এসওয়ের পক্ষে উপযুক্ত নয়। OTOH, আমি পাইকারি মুছে ফেলার সুপারিশ করতে যোগ্য মনে করি না।
প্রধানমন্ত্রী 2 রিং

এই পরিস্থিতিতে আমি মনে করি যে উত্তরের প্রয়োজনীয় অংশগুলি অন্তর্ভুক্ত করা শক্ত হবে কারণ প্রয়োজনীয় অংশটি একটি .exe ফাইল যা লিঙ্কযুক্ত পৃষ্ঠায় হোস্ট করা হয়। আমি লিংক-পচা সম্পর্কে উদ্বেগটি পুরোপুরি বুঝতে পেরেছি, আমি কীভাবে এই স্ব-অন্তর্নিহিতকে এসও-তে অন্তর্ভুক্ত করতে পারি তা সম্পর্কে আমি নিশ্চিত।
ব্রায়ান কেনেডি

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