Sütundaki değerleri, Vim'deki boşlukla ayrılmış dosyayı değiştirin


-1

Şuna benzeyen bir dosyam var:

2067 24311 <hkxhk> {00}
2069 17219 <hkxhk> {00}
2071 20931 <hkxhk> {00}
2073 5557  <hkxhk> {00}
2075 2127  <hkxhk> {00}
2077 20947 <hkxhk> {00}
2081 18088 <hkxhk> {00}

İlk sütun değerini, göründüğü şekilde değiştirmek istiyorum.

5 24311 <hkxhk> {00}
5 17219 <hkxhk> {00}
5 20931 <hkxhk> {00}
5 5557  <hkxhk> {00}
5 2127  <hkxhk> {00}
5 20947 <hkxhk> {00}
5 18088 <hkxhk> {00}

Birinci boşlukla ayrılmış sütunun yeni bir değerle değiştirildiği yerde, bu durumda 5.


Şimdiye kadar bir şey denedin mi? Denemelerinizi göstererek ve hangi bölümlerde zorluk yaşadığınızı açıklayarak, yetkinliğinizi daha iyi anlayabilir ve daha kesin bir cevap verebiliriz. Olduğu gibi, sadece bir gereksinim yayınlamış gibi görünüyorsun ve birisinin kodunu senin için yazmasını istiyorsun.
Ingo Karkat

Yanıtlar:


3

Arama ve değiştirme:

:%s/^\S*/5/

%s- dosya boyunca arama, ^- satır başlangıcı, \S- \S*boşluksuz karakter, 5- boşluksuz karakter herhangi, - yeni değer.

Makroları kullanmak:

qq0cw5<Esc>q
:%norm! @q

qq- adlı bir makro kayıt başlatmak q, 0- yer imleci bir satır başında, cw5- (yerine c hange) bir ağırlık ile Ord 5, <Esc>- normal konuma dönmek, q- uç makro kaydetme;

%norm!- dosyanın her satırına normal mod komutunu uygulayın, @q- makroları yürütün q(normal mod komutu).

İlk sütunun sabit genişliğe (4 karakter) sahip olduğunu varsayarak görsel seçimi kullanma :

gg0<C-v>G3lc5<Esc>

gg0- imleci dosyanın başına getirin, <C-v>- blok seçim modunu başlat, G- bir satır genişliğinde sütun (H × 1 blok) seçerek son satıra 3lgeçin , - üç karakter sola dönün, böylece H × 4 blok seçin, c5<Esc>- Her satırdaki seçimi değiştirin 5ve normal moda geri dönün.

Sonuç

Sorununuz o kadar basit ki, arama-değiştirme yaklaşımı burada en basit olanı oluştururken, genel olarak bir makro kaydetmek bir regexp icat etmekten çok daha uygundur.


1

Linux'taysanız, Mac OSX'te veya MINGw'de veya columnaraca sahip herhangi bir sistemde (ve Vim kullanıyorsanız olasılıklar çok yüksektir), o zaman dosyanızı sütunlamak için kullanabilirsiniz:

  • columnlisteleri sütun için bir Linux araçtır
  • -t Dosyanın sahip olduğu sütun sayısını sayın.
  • -s Sütunları sayarken, bunu geçerli sütun ayırıcı olarak yorumlayın.
  • -o Dosyayı değiştirirken, bunu yeni sütun ayırıcı olarak kullanın.

commandAracı doğrudan istemden çalıştırabilirsiniz . Örneğin:

column my-file.txt -t -s "|" -o " | " > my-file-columnated.txt

Veya komut modunda Vim'den çalıştırabilirsiniz:

  • :%!column -t -s "|" -o " | "
  • : Bir komutu yürütmek için standarttır.
  • %tüm dosya içeriğini etkiler. Bunu atlarsanız, işlemi yalnızca seçilen satırlarda gerçekleştirirsiniz. Seçili satır yoksa, yalnızca geçerli satırınızı etkilersiniz.
  • ! harici bir araç yürütür.

Ve eğer sütun ayırıcınız, orijinal posterdeki gibi, sadece bir boşluksa, o zaman şansınız yaver demektir, çünkü kullanılan varsayılan ayırıcı columntam olarak boşluktur:

:%!column -t
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.