Dosyayı önce ve sonra ikinci sütuna göre sıralama


13

İki sütunun sekmeyle ayrılmış metin dosyasını ikinci sütunun ilk öğesine göre sıralayarak nasıl değiştirebilirim (yalnızca ilk sütun öğesi aynı ise)?

exemple:

Giriş Dosyası 1

A   1-2
A   6-8
A   3-4
B   7-10
B   5-9

Beklenen çıktı: Dosya 2

A   1-2
A   3-4
A   6-8
B   5-9
B   7-10

Yanıtlar:


22

Bir kerede (birden çok) sütun sıralamak için sort's -kseçeneğini kullanın :

$ sort -k1,1 -k2n input
A   1-2
A   3-4
A   6-8
B   5-9
B   7-10

-k1,1önce ilk sütuna göre, ardından -k2nilk sütun bağlandığında ikinci olarak sayısal olarak sıralar, böylece çıktınızı istediğiniz sıraya göre alırsınız: yalnızca ilk sütun öğesi aynıysa, ikinci sütunun ilk öğesine göre sıralama.

Sayısal olarak sıralarken, yalnızca sayı olmayı bırakana kadar alanı inceler, böylece size yalnızca ilk öğesinin karşılaştırmasını verir.

İki anahtar aynı olduğunda, sorttam satırları son çare karşılaştırması olarak lexik olarak karşılaştırır. Mesela A 1-10vs A 1-2birinci anahtarları aynıdır (vardır Adize) ve de (her ikisi de sayısı olarak kabul edilir, ikinci anahtar 1), böylece daha sonra sortkarşılaştırır A 1-10vs A 1-2lexically ve ikinci olarak daha büyük olduğu 2sonra sıralar 1. GNU uygulaması sortbir sahiptir -Vseçeneği veya Vbir gerçekleştirmek için anahtar bayrak sürümü böylece, dizgeler sayısal olarak karşılaştırılır içinde ondalık basamak olduğu dizilerin dışında bir sözcük karşılaştırma gibi olan tür, sort -k1,1 -k2Volur sıralama A 1-10sonra A 1-2çünkü 10daha büyük bir sayı olduğu gibi 2.


¹ teknik olarak, -k2çizginin ikinci alandan başlayarak (boş olmayandan boşluğa ilk geçişten sonra) ve satırın sonunda biten, ancak sadece önde gelen kısma neşdeğer olan bayrak -k2,2nkısmı anlamına gelir. sayıyı oluşturan sayılır.

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.