2012-11-24 16 views
11

Her alanın arasındaki boş alanı virgülle ayırıcı ile değiştirmek istiyorum. Birisi bunu nasıl yapabildiğimi bana bildirebilir. Aşağıdaki komutu denedim ama işe yaramıyor. Eğer yaklaşık sed söz varsaSed kullanılarak boşlukla virgül nasıl yer değiştirilir?

My command: 
:%s//,/ 


53 51097 310780 1 
56 260 1925 1 
68 51282 278770 1 
77 46903 281485 1 
82 475 2600 1 
84 433 3395 1 
96 212 1545 1 
163 373819 1006375 1 
204 36917 117195 1 
+0

Bu VIM mi? Ben hiçbir yerde 'sed' görmüyorum. – tjameson

+0

Yea, vim editörün içinde. – Teja

cevap

18

, bu çalışır:

s/ /,/g 
+0

Burada Vim kullanmaya çalışıyor gibi görünüyor, sed değil, iyi çağrı – netpoetica

7

vim İçinde, normal yazmak istiyorsanız: vim yılında

sed -e "s/ /,/g" < a.txt 

, yerine aynı normal ifadeler kullanabilirsiniz (komut) modu:

:%s/ /,/g 
o modifiye edeceği gibi, -i seçenek sed için vasıta "yerinde düzenleme":

sed -i 's/\ /,/g' input_file 

Not: 10 istemi terminal üzerinde

, bir dosya üzerinde bu gerçekleştirmek için sed kullanabilirsiniz giriş dosyası.

+5

Eğer Max OSX üzerindeyseniz, '-i' seçeneği bir argüman gerektirir. Yedekleme istemiyorsanız boş bir dizge geçirebilirsiniz. – tripleee

+0

^Çok teşekkür ederim, bu komutu bir mac üzerinde düzeltmeye harcadım – Sean

2

Ben ne istediğini tam olarak değil biliyorum ama, bir satır ile virgül değiştirilmesi için, bu büyük çalışır:

tr , '\n' < file 
1

aşağıdaki komutu deneyin ve sizin için çalışmak gerekir.

sed "s/\s/,/g" orignalFive.csv > editedFinal.csv 
0

sonra terminalde çıkışı istiyorsanız,

$sed 's/ /,/g' filename.txt 

Ama dosyayı kendisi yani sonra dosyada virgül ile yer değiştirmek istiyorsanız,

düzenlemek istiyorsanız
$sed -i 's/ /,/g' filename.txt