Boşlukta sed ile nasıl eşleştirebilirim? Verilerimde sonraki 3+ sonraki boşluk karakterlerini (sekme boşluğu) eşleştirmek ve 2 boşlukla değiştirmek istiyorum. Bu nasıl yapılabilir?
Boşlukta sed ile nasıl eşleştirebilirim? Verilerimde sonraki 3+ sonraki boşluk karakterlerini (sekme boşluğu) eşleştirmek ve 2 boşlukla değiştirmek istiyorum. Bu nasıl yapılabilir?
Yanıtlar:
Karakter sınıfı \sboşluk karakterlerini eşleşir <tab>ve <space>.
Örneğin:
$ sed -e "s/\s\{3,\}/ /g" inputFile
en az 3 boşluktan oluşan her sekansı iki boşlukla değiştirecektir.
AÇIKLAMA : POSIX uyumluluğu için, bir GNU sed uzantısı olduğu için karakter sınıfını [[:space:]]kullanın \s. Sed ve BRE'ler için POSIX teknik özelliklerine bakın
sedile kullanmak zorunda kaldım, [[:space:]]çünkü \sbenim için işe yaramadı. Belki \sbir GNU sed uzantısıdır?
[[:space:]Biri yerine [[:blank:]]yalnızca yatay sekmeler ve boşluklarla eşleşen (ancak yeni satırlar, dikey sekmeler vb. Olmayan) kullanabilirsiniz.
Bu MacOS 10.8’de çalışır:
sed -E "s/[[:space:]]+/ /g"
sed "s/[[:space:]]\+/ /g"bir veya daha fazla boşlukla eşleştirmek istiyorsunuz .
-Ebayrağı da destekliyor .
Bazı eski sed sürümleri \ 'yi bir beyaz boşluk eşleme simgesi olarak tanımayabilir. Bu durumda, X'in bir boşluk ve Z'nin bir sekme olduğu '[XZ] [XZ] *' ile bir veya daha fazla boşluk ve sekme dizisini eşleştirebilirsiniz.
sed 's/[ \t]*/"space or tab"/'
sedherhangi bir sistemde herhangi bir sürümünde çalışacağı garanti ediliyor mu? Bunun nerede diğer cevaplarla benzer şekilde çalıştığını söylemeye değmezse, sınırlamaları ve bunun istenen sonucu elde edemeyeceğini biliyoruz.