Metni sütunlara biçimlendirme


11

Aşağıda gösterildiği gibi iki sütun içeren bir dosya var (örnek):

DOSYA 1:

John 1
Peter 2
Michael Rod 3
Su 7
Louise 9

Bu biçimlendirmek gerekiyor ve benim beklenen çıktı olmalıdır:

DOSYA 1:

John        1
Peter       2
Michael Rod 3
Su          7
Louise      9

1
2 sütun nerede?
marc

Her iki çıktı da aynı görünüyor. Sorunuzla ilgili daha fazla bilgi verebilir misiniz?

2
Sütunlar nasıl tanımlanır? İsim ve numara arasında bir sekme veya başka bir karakter var mı? Bunun Michael Rod 33 değil 2 sütun olduğunu nasıl bilebiliriz ?
terdon

2
Hayır, metin görüntüleri yayınlamayın . Size yardım edebilmek için bu metni kopyalayıp yapıştıracaktım ve şimdi yapamıyorum.
Kusalananda

1
mmmint ve terdon'un söylediklerine; örneğin, en uzun çizginin genişliğine izin vermek için girintili olması gereken son sütun olduğunu belirtebilir misiniz ?
Jeff Schaller

Yanıtlar:


18

Giriş yalnızca iki sütun olsaydı, ben kullanmanızı öneririm column -t. columnYardımcı program herhangi bir sayıda boşluk veya sekmeyi sütun sınırlayıcı olarak ele alacağından , burada pek işe yaramaz :

$ column -t file1
John     1      
Peter    2      
Michael  Rod  3 
Su       7      
Louise   9      

"Michael Rod" iki sütundur, böylece tek sıra diğer satırlardan daha fazla sütuna sahiptir, bu da çıktıyı bozar.

Son sütundan önce bir sekme karakteri ekleyerek ve ardından bunu columnyalnızca bir sınırlayıcı olarak kullanalım:

$ awk '{ $NF = "\t" $NF; print }' file1 | column -t -s $'\t'
John          1
Peter         2
Michael Rod   3
Su            7
Louise        9

Awk'ta NFalan sayısı (sütunlar) ve $NFson alandaki verilerdir. Kullandığım komut dosyası , satırın tamamını yazdırmadan önce bir sekme karakteri ekleyerek son alanın verilerini değiştirir .

Kabuğunuz anlamadıysa $'\t', verilerin parçası olmayan başka bir karakter seçebilirsiniz:

awk '{ $NF = "@" $NF; print }' file1 | column -t -s '@'
John          1
Peter         2
Michael Rod   3
Su            7
Louise        9
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.