Sed yapıyor, "Bul" bölümünde bir regex kullanıyor. anahtara bağlı olarak BRE veya ERE veya PCRE kullanır. Ters eğik çizgi, bir regex içinde özeldir.
Katma
Tek tırnak kullanma sürümünüzü kullanmadım çünkü cmd.exe! cmd.exe, hiç değilse çift tırnak kullanır.
Ve iyi çalışıyor.
gnuwin32'nin sed çalışmasıyla, olması gerektiği gibi cmd.exe dosyasından sınandı.
C:\>echo sample\input | sed "s/\\/----/"
sample----input
C:\>sed --v
GNU sed version 4.2.1
Copyright (C) 2009 Free Software Foundation, Inc.
Cygwin'in sed'sini test ediyor olsaydım, cygwin programlarının çalıştırılacağı yer olan cygwin penceresinden çalıştırdım. Sonra tek tırnak kullanırım. msys, bu anlamda cygwin'e benziyor.
GÜNCELLEŞTİRME
Cygwin'in sed komutunu cmd'den veya cygwin'den çalıştırabilirsiniz. Farklı GNU sürümleri oldukları için farklı davranıyorlar, ancak cygwin'den çalışan cmd'den (cmg için tek tırnaklar için basit nokta dışında ve cmd için çift tırnaklar hariç) çalışan kabukla ilgili bir sorun görmüyorum.
Ve cygwin'in daha sonra sed versiyonu var. Gnuwin32's sed, gnuwin32 grep de dahil olmak üzere birçok gnuwin32 olayı gibi, yıllarca eskidir. ve ör. daha sonra greps daha önce greps içinde hataları düzeltebilir. Gnuwin32'nin kullandığı ya da gnuwin32'nin kullandığı güncel sürüme göre daha az olan 2009 sed, tamam olabilir, ancak cygwin'in kullanacağı yeni bir sürümü kullanmak daha iyi olabilir.
İlginçtir, seds ters eğik çizgi ile ilgili farklı davranır .. Cygwin'in kullandığı sed, daha sonra çalıştığını görebilirsiniz.
C:\blah>echo a\bc | c:\cygwin\bin\sed "s/\\/_/"
/usr/bin/sed: -e expression #1, char 6: unterminated `s' command
C:\blah>echo a\bc | c:\cygwin\bin\sed "s/\\\/_/"
a_bc
C:\blah>echo a\bc | "c:\Program Files (x86)\GnuWin32\bin\sed" "s/\\/_/"
a_bc
Daha önceki sed (gnuwin32's sed), "s / \ / _ /" değerine izin verir. Böylece ters eğik çizgi gerçek bir ters eğik çizgi yapmak için ters eğik çizgiden kaçıyor. Ve iki ters eğik çizgiden sonraki eğik çizgi iyi kalır. Ve bunun içinde çalışır.
nota çalışan cygwin'in sedye cmd olması gayet iyi. Ve daha yeni bir sürüm olduğundan, gnuwin32'nin ayarlanması tercih edilir.
Daha sonra sed (cygwin's sed), "s / \ / _ /" ifadesine izin vermiyor çünkü / eğik çizgiden kaçıyor. İçgüdüsel (ve doğru içgüdüsel) başka bir ters eğik çizgi eklemeye çalışır ve ne olacağını görürsünüz. Ve çalışıyor. Emin değil mekanik ama sanırım daha sonra sed tek bir ters eğik çizgi \\\
.
C:\blah>echo \ | c:\cygwin\bin\sed "s/\\\/d/"
d