سؤال

أرغب في تحرير محتوى الملف برمجيًا باستخدام سطر أوامر Windows (cmd.exe).في * لا شىء هناك سيد لهذه المهام.هل هناك أي ما يعادلها مفيدة في ويندوز؟

يحرر:أنا أبحث عن حل سطر الأوامر الأصلي.

هل كانت مفيدة؟

المحلول

اليوم أنقذني بوويرشيل.

ل grep هنالك:

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

ولل sed هنالك:

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

لمزيد من التفاصيل انظر دخول مدونة زين نابلسيس.

نصائح أخرى

sed (وأمثالها) موجودة ضمن عدة حزم من أوامر Unix.

إذا كنت لا ترغب في تثبيت أي شيء وكان نظامك ليس Windows Server، فعليك استطاع استخدم لغة البرمجة النصية (VBScript على سبيل المثال) لذلك.يوجد أدناه طعنة جسيمة وغير متوقعة.سيبدو سطر الأوامر الخاص بك

cscript //NoLogo sed.vbs s/(oldpat)/(newpat)/ < inpfile.txt > outfile.txt

حيث يوجد oldpat وnewpat أنماط regex لمايكروسوفت vbscript.من الواضح أنني قمت فقط بتنفيذ الأمر البديل وافترضت بعض الأشياء، ولكن يمكنك تجسيده ليكون أكثر ذكاءً وفهم المزيد عن 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

UnxUtils يوفر sed لـ Win32، كما يفعل GNUWin32.

إذا كنت لا ترغب في تثبيت أي شيء (أفترض أنك تريد إضافة البرنامج النصي إلى بعض الحلول/البرامج/الخ التي سيتم تشغيلها في أجهزة أخرى)، فيمكنك محاولة إنشاء برنامج نصي vbs (على سبيل المثال، استبدال.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 المقدم من "Bill Weaver"، لكنني أعتقد أن هذا الإصدار أكثر ملاءمة من حيث الأحرف الخاصة (' > < / ) .

بالمناسبة، أنا لم أكتب هذا، لكن لا أذكر من أين حصلت عليه.

هنالك سوبر سيد نسخة محسنة من سيد.بالنسبة لنظام التشغيل Windows، يعد هذا ملف .exe مستقلًا، مخصص للتشغيل من سطر الأوامر.

جرب Fart.exe.إنها أداة مساعدة للبحث عن النص واستبداله ويمكن استخدامها في برامج الأوامر المجمعة.

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

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

هذا هو سلوك

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

يمكنك تثبيت Cygwin (http://www.cygwin.com/) واستخدم sed من هناك.

يمكنك تجربة بوويرشيل.هناك الحصول على المحتوى و ضبط المحتوى يتم إنشاء الأوامر التي يمكنك استخدامها.

أنا أستعمل سيجوين.أقابل الكثير من الأشخاص الذين لا يدركون أنه إذا قمت بوضع ثنائيات Cygwin على المسار الخاص بك، فيمكنك استخدامها من داخل Windows Command Shell.ليس عليك تشغيل Cygwin's Bash.

قد تنظر أيضا في خدمات ويندوز لنظام التشغيل Unix متوفر من Microsoft (ولكن فقط في الإصدار الاحترافي والإصدارات الأحدث من Windows).

إدلين أو تحرير

بالإضافة إلى وجود خدمات Windows لنظام Unix والتي تأتي مع العديد من أدوات Unix لنظام التشغيل Windows.http://technet.microsoft.com/en-us/interopmigration/bb380242.aspx

تحديث 12/7/12 في Windows 2003 R2 ، Windows 7 & Server 2008 ، إلخ.تم استبدال ما ورد أعلاه بالنظام الفرعي للتطبيقات المستندة إلى UNIX (SUA) كوظيفة إضافية.ولكن عليك تنزيل الأدوات المساعدة:http://www.microsoft.com/en-us/download/details.aspx?id=2391

يمكنك أن تنظر إلى أدوات جنو, ، فهي توفر (من بين أشياء أخرى) على النوافذ.

يوجد ملف دفعي مساعد لنظام التشغيل Windows يسمى repl.bat الذي لديه الكثير من قدرة SED ولكن doesn't require any additional download أو التثبيت.وهو ملف دفعي مختلط يستخدم Jscript لتنفيذ الميزات وهكذا swift, ، و doesn't suffer from the usual poison characters معالجة الدفعات ويتعامل مع الخطوط الفارغة بسهولة.

تحميل repl من - https://www.dropbox.com/s/qidqwztmetbvklt/repl.bat

المؤلف هوdbenham من Stack overflow وdostips.com

ملف دفعي مساعد آخر يسمى findrepl.bat يمنح مستخدم Windows الكثير من القدرة على GREP ويستند أيضا Jscript وهو أيضًا ملف دفعي مختلط.وهو يشارك فوائد repl.bat

تحميل findrepl من - https://www.dropbox.com/s/rfdldmcb6vwi9xc/findrepl.bat

المؤلف هوaacini من تجاوز سعة المكدس وdostips.com

بقدر ما أعرف لا يوجد شيء مثل sed مدمج مع النوافذ.ومع ذلك، يتوفر sed لنظام التشغيل Windows بعدة أشكال مختلفة، بما في ذلك كجزء من Cygwin، إذا كنت تريد نظام فرعي كامل POSIX، أو باعتباره Win32 أصليًا قابلاً للتنفيذ إذا كنت تريد تشغيل sed فقط على سطر الأوامر.

Sed لنظام التشغيل Windows (مشروع GnuWin32)

إذا كان يجب أن يكون أصليًا لنظام التشغيل Windows، فإن الشيء الآخر الوحيد الذي يمكنني اقتراحه هو استخدام لغة برمجة نصية يدعمها Windows بدون وظائف إضافية، مثل VBScript.

يعمل Cygwin، ولكن هؤلاء المرافق متاحة أيضا.ما عليك سوى وضعها على محرك الأقراص لديك، ووضع الدليل في المسار الخاص بك، وسيكون لديك العديد من أدوات يونكس سهلة الاستخدام.IMHO خفيف الوزن مثل Cygwin (على الرغم من أنه يعمل أيضًا).

كنت بحاجة إلى أداة sed تعمل مع موجه Windows cmd.exe. ميناء إريك بيمينت سيد إلى ملف DOS واحد.exe عملت بشكل رائع بالنسبة لي.

انها جيدة جدا موثقة.

هذا يعمل على Vista Ultimate، ولست متأكدًا من Pro.

sed -f commandfilename.cmd file1 > file2
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top