Bir metin dosyasını notepad ++ ile satır uzunluğuna göre nasıl sıralayabilirim? Bahsedilen görev için herhangi bir eklenti var mı?
Eklenti olmaması durumunda, okunacak ilk ve belki ikinci öğretici nedir, Eklentiyi kendim yazmak için?
Bir metin dosyasını notepad ++ ile satır uzunluğuna göre nasıl sıralayabilirim? Bahsedilen görev için herhangi bir eklenti var mı?
Eklenti olmaması durumunda, okunacak ilk ve belki ikinci öğretici nedir, Eklentiyi kendim yazmak için?
Yanıtlar:
Bu yanıttan bir YouTube videosu esinlenmiştir . Önemli ise orijinal sıralama düzenini korumak için güncellendi.
Notepad ++, seçili satırları alfabetik olarak sıralayan yerleşik bir TextFX aracına sahiptir. Bu araç, her satırın soluna boşluklar yerleştirerek ve tüm satırların aynı uzunlukta olduğundan emin olarak satırların uzunluğuna göre sıralamak için ele geçirilebilir.
"Hayvanat Bahçesi" alfabetik olarak "Evlerinden" önce gelir çünkü boşluk bir karakter olarak kabul edilir ve "i" den önce gelir. __X(alt çizgilerin gerçekten boşluk olduğunu iddia etmek) benzer şekilde daha önce alfabetik olarak gelir _XX. Bu yanıttaki fikir, __________092dogyukarıda sıralanacak şekilde boşluklar ve satır numaraları eklemektir _003alligator.
Örnek veriler olarak aşağıdakileri kullanacağım:
Lorem
ipsum
dolor
sit
amet
consectetur
adipisicing
Adım 1. Satır numaraları ekleyin.
(Barlop tarafından eklenen not - bu adımla ilgili okuyucu için bir not, bu satır numaralarına göre sıralamayacağız, satırların uzunluğuna göre sıralıyoruz. Ancak satır numaralarını eklemenin nedeni, doğal düzeni bilin, böylece iki + çizgi eşit uzunlukta olduğunda bu çizgileri o doğal düzene göre sıralayabiliriz)
Metin dosyanızın yalnızca içinde veri olduğunu varsayarsak, metin imlecini (dikey çizgi) dosyanın ilk konumuna getirin. Ardından Editmenüde Column Editor...( Alt+ C) öğesini seçin . "Eklenecek Sayı" yı seçin ve 1 ile başlayın, 1 artırın ve baştaki sıfırları ekleyin. Bunun, en kısa dizeden en uzun dizeye sıralarken orijinal sıralamayı koruyacağını unutmayın. En uzun veya en kısa sıralamak istiyorsanız önce tüm satırları ters çevirin .
1Lorem
2ipsum
3dolor
4sit
5amet
6consectetur
7adipisicing
Adım 2. Tüm satırları önde gelen boşluklarla doldurun.
Metin imlecini (dikey çizgi) dosyanın ilk konumuna getirin. Ardından Editmenüde Column Editor...( Alt+ C) öğesini seçin . En kısa veri satırının en uzun veri satırının uzunluğuna kadar dolması için yeterli boşluk yerleştirin. En kısa satırınızda 4 karakter ve en uzun 44 karakter varsa, en az 40 boşluk eklediğinizden emin olun.
__________1Lorem
__________2ipsum
__________3dolor
__________4sit
__________5amet
__________6consectetur
__________7adipisicing
Adım 3. Çizgileri eşit uzunlukta kesin.
En uzun veri satırınızın uzunluğuna eşit veya bu uzunluğu aşan sağdaki karakterlerle eşleşmek için aşağıdaki Normal İfade Bul / Değiştir ( Ctrl+ H) kullanın.
^.*(.{50})$
Tümünü değiştirin $1. Bu, her satırın en sağdaki 50 karakteri hariç her şeyi keser. Verileriniz 50'den uzun (veya kısa) ise {50}, Normal İfadedeki değeri ayarlayın .
(Barlop tarafından eklenen not - buradaki fikir, en kısa satırların başında en fazla boşluğa sahip olmasıdır )
_______1Lorem
_______2ipsum
_______3dolor
_________4sit
________5amet
_6consectetur
_7adipisicing
Adım 4. Çizgileri sıralayın.
Metnin tamamını seçin ( Ctrl+ A). TextFX menüsü aracılığıyla adresine gidin Text FX > TextFX Tools > Sort lines case sensitive (at column). Verileriniz artık en kısatan en uzağa doğru uzun bir sırada olmalıdır. Bunları en uzuntan en kısaa doğru Text FX > TextFX Tools > + Sort ascendingsıralamak istiyorsanız, sıralamadan önce seçeneğin işaretini kaldırın . Satır numaralarının nasıl tersine çevrildiğine de dikkat edin.
_________4sit
________5amet
_______1Lorem
_______2ipsum
_______3dolor
_6consectetur
_7adipisicing
Adım 5. Öndeki boşlukları kaldırın.
Baştaki boşluklarla eşleştirmek için başka bir Normal İfade Bul / Değiştir ( Ctrl+ H) kullanın.
^ *\d{4}
Bu, düzeltme işareti ve yıldız işareti arasındaki bir boşluk. Hepsini hiçbir şeyle değiştirmeyin. 4 basamaklı satır numaralarınız varsa, tüm önde gelen boşlukları ve eklenen satır numaralarını kaldıracaktır. Satırını, {4}satır numaralarınızda doğru sayıda basamakla değiştirin .
sit
amet
Lorem
ipsum
dolor
consectetur
adipisicing
MAKRO
Notepad ++ 'ın makro özelliğini kullanarak yukarıdaki adımları kaydettim ve çalışmıyor. Hangi adımın başarısız olduğundan emin değilim, ama nedenini teşhis etmedim. AutoHotKey'i tekrar tekrar yaparsanız bunu otomatikleştirmek için muhtemelen kullanabilirsiniz.
^ *\d{5}, satır numaraları için veya herhangi bir sayıda basamak kullanın .
Hayır olduğunu düşünmüyorum. En yakın olan TextFx eklentisidir ancak bu satır uzunluğu değil, karakter tabanlı bir sıralamadır. En iyi seçeneğiniz, metni bir e-tabloya atmak ve orada sıralamaktır ( LEN()işlevi kullanarak ayrı bir hesaplanmış sütun kullanarak ).
CSV dosyalarında N ++ 'ta SQL kullanabilirsiniz ! Örneğin:
col1;
hgfhfghfhg;
khjfhgfhfghfgh;
kjhfhgfhfhgfghfhf;
lkjgjghjhg;
lkjgjg;
, select * from data order by length(col1) descazalan sıralama için komut yürütebilirsiniz . "data", geçerli dosya anlamına gelir. "col1" - ilk (ve son) sütunun adı.
Ne yazık ki, tek sütunlu metindeki satırlardan sonra ayırıcı ayırmaya izin vermeyen bir hata var.
Veya linux ve nedit'iniz varsa:
ctrl-a
alt-r
perl -e 'print sort { length($a) <=> length($b) } <>'