Gelen bu düzenleme
Stéphane Chazelas POSIXifies (tekrar) benim sed
bir ekleyerek biçimlendirme -e
XPression mola ve başka -e
XPression deyimi. Şimdi, neden yorumlarda ona sorabilirim, sanırım, ama bu cevapta zaten 18 numaralı revizyon var ve öncekilerin neredeyse hepsi benzer freebies sayesinde zaten oldu (silinen yorumları görebiliyorsanız, Yani) . Ayrıca, bunu neden daha genel olarak yararlı olabilecek bir şekilde ifade etmeyi anlamaya yeterince yakın olduğumu düşünüyorum . İşte umuyoruz ...
Genelde toplam sed
-e
xpressions'ımı bire bir tutmayı tercih ederim , ama aynı zamanda spesifikasyona olabildiğince yakın olarak uymak için daha fazla tercihim var , özellikle de fark bir <space>
ve a'dan fazla değilse -e
. Ama neden yapmam gerektiğini anlamıyorsam bunu yapamam . İşte şu anki durumumun kısa bir özeti:
' -e '
mola portably bir vekâlet edebilirsed
komut\n
bir de ewline molased
komut satırı deyimi ... Ben neden kuşkusuz bulanık değilimbir
sed
{
işlevdeki kapanış ayracı}
öncesinde\n
, burada belirtildiği gibi bir ewline sonu olmalıdır :<right-brace>
Bir önce yapılır<newline>
ve önce veya sonra olabilir<blank>
karakterler.
Bir
\n
ewline molası benzer ... her türlü kullanımından takip gereklidira
,b
,c
,i
,r
,t
,w
, veya:
.
Ancak {
fonksiyon }
tanımının !
operatör değil ile nasıl ilişkili olduğunu net bir şekilde anlamıyorum . Şartnamelerde olumsuzlama operatörü bulduğum tek söz:
- Bir işlevden önce bir veya daha fazla
!
karakter olabilir, bu durumda adresler desen boşluğunu seçmezse işlev uygulanmalıdır.
Bu, !
ima edilen {
parantez kullanımı anlamına mı geliyor }
? Hangi $!
komutlar - aynı şekilde ' -e '
aralarla ayrılmalılar mı? Stéphane en son cevabımı POSIX hale getirdiğinde ele alınan bu muydu ?
Ben ya !
olumsuzlama operatörü ya da b
düzenlemesinde ele aldığı ahır ifadesi olduğunu düşünüyorum - ya da muhtemelen her ikisi de aynı anda - ama bilmiyorum ve istemeliyim. Eğer durum bu ise , sadeceb
çiftlik açıklamada, sonra ben inanıyorum bir d
yerinde yapmak ve gereğini ortadan kaldıracak ' -e '
aradan, ama yerine bir üç kere hazarding önce belirli olurdu POSIXified cevabı. Yardım edebilir misin?
Sonuçta riske girdim , ama kesin olarak değil ...
:
- o ay önce eve gittin. Ama ikinci sed
komutun neden benzer şekilde POSIXleştirildiğini tam olarak anlamıyorum .
sed
çok net değil. Geçmişte birkaç kez açıklama istedim, ancak sonuç olarak güncellendiğini sanmıyorum. İyi bir test, yadigâr araç testini denemektir (orijinalinden türetilen ve POSIX spesifikasyonunun büyük ölçüde dayandığı Solaris olanı).
s///
okursanız, ubstitution'ların a ile zincirlemeyi kabul etmelerini şart koşarsınız ; . yeni satırla sınırlandırılması gereken komutlar etrafında bulanıklaşır ve -e
bu durumda nasıl durabilir - en azından benim için öyle. ama ben sed
onları oldukça değiştirilebilir olsa yorumlamıyor bir yanılmak için ive henüz .
;
bir satırsonu öncesine ihtiyacınız olmadığını bilmelisiniz - satırsonu iyi. Dürüstçe, olabilir olmadan -e
tamamen ve tüm ve sadece gibi dosyası yazmak #!/bin/sed
bir satır üzerinde her komutuyla - ya da bunun yerine sahip ayrılmış tür sınırlayıcı gerektirmez olanlar ;
. Olanlar do yeni satırları gerektiren genellikle keyfi girdi almak olanlardır - :
gibi onlara bakın etiket isimleri ve komutları b
veya t
veya kapama }
fonksiyonları veya buraya curlies r
EAD ve w
dosya adı args almak ayin. Hepsi portatif olarak takip edilmelidir \n
.
b;n;:b
,";n;:b"
tarihsel ve POSIX seds denilen etikete dallıyorsunuz (ve GNU sed bu konuda değil).