Verilen dosyalarda satırın sonundaki boşlukları nasıl kaldırırım (birden fazla)?


9

Sooo kaynak dosyalarında, onları göstermek için vim bile yapılandırdığım gereksiz boşluklardan bıktım.

Sorun şu ki, (her zaman olmasa da) çok sık arkadaşlarımla geliştiricilerle işe yaramaz alanlarla uğraşmak zorunda kalıyorum.

Sadece kaynak dosyaları (normal bir ifade verilen) taramak ve verilen tüm dosyalardan boşlukları kaldırmak istiyorum.

Ben web ("bash boşluk kaldırmak" vb) etrafında arama ama yararlı bir şey bulamadık.


2
Hangi boşluk kaldırılır? Kaldırılmasını istediğiniz şeyin bir örneği olmadan, kimsenin size nasıl yardımcı olabileceğini görmüyorum. (Sanırım tr -d ' ' < file.footam olarak aradığın şey değil.)
Mat

Yararsız beyaz alan ile kullanışlı beyaz alan arasındaki farkı programlı olarak nasıl anlatabilirsiniz? BTW: for döngüsü ve mv ve sed ve daraltma boşluklarını kullanabilirsiniz;
bsd

Dosyalarınızı vim'e
Lucas

Yanıtlar:


8

Eğer işe yaramaz boşlukla, satırın sonunda boşluk bırakmayı kastediyorsanız, bu GNU sistemlerinde çalışacaktır:

find -name '*.c' -print0 | xargs -r0 sed -e 's/[[:blank:]]\+$//' -i

( *.ckaynak dosyalarınız ne olursa olsun değiştirin )


Başlığı değiştirdim, cevabınız için çok teşekkür ederim. Birisi oy verdi çünkü belki de çok basit olduğunu düşündü, kimsenin böyle bir soru sormaması gerekiyordu ;^). Tekrar teşekkürler.
Olivier Pons

1

Bu tekrarlayan bir problem!

perl -i -pe 's/\s+\n/\n/'  ./*.c

(bu da kaldırılır ' \r\n')

Normalde biraz daha karmaşık sürüm "nrs" kullanın (gereksiz boşluk yok):

#!/usr/bin/perl -pi
s/\h*(\r\n|\n|\r)/\n/g;                 ## normalize \n (DOS, MAC)
s/^(\xFF\xFE|\xFE\xFF|\xEF\xBB\xBF)//;  ## remove BOM !

kurun: chmod 755 nrs; cp nrs ~/bin; (veya benzeri)

ve kullan: nrs ./*.c

İkili dosyalarda kullanmayın!



0

GNU araçlarıyla zaten iyi olan dosyalara dokunmaktan kaçınmak için:

grep -rlZ --binary-files=without-match --include='*.c' '\s$' . |
  xargs -r0 sed -i 's/\s+$//'
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.