Bash: Bir metin sütununu satıra dönüştürün

Adında bir metin dosyamız olduğunu varsayalım dağıtımlar.txt Takip ederek:

Arch Linux
debian
ubuntu
kaos
fötr şapka
Slackware
gentoo

Ve bunu şuna dönüştürmek istiyoruz:

archlinux debian ubuntu kaos fötr slackware gentoo

Bunu başarmak için kullanacağız döngü için y un yankı -n :

for i in `< distros.txt`; do echo -n ${i}" ";done; echo ""

Bitti, hile yapıyor 🙂

Bu bize terminalde istenen sonucu gösterecektir, öte yandan başka bir .txt dosyasına kaydedilmesini istiyorsak çıktıyı yeniden yönlendiririz:

for i in `< distros.txt`; do echo -n ${i}" ";done; echo "" > distros-nuevas.txt

Ve voila 🙂

Hiçbir şey, umarım yararlı bulursun. Bunun normal ifadelerle de yapılabileceğini açıklığa kavuşturmak geçerli, nasıl olduğunu bilmiyorum ... ama normal ifadelerle hemen hemen her şeyi yapabilirsiniz hahaha.


Yorumunuzu bırakın

E-posta hesabınız yayınlanmayacak. Gerekli alanlar ile işaretlenmiştir *

*

*

  1. Verilerden sorumlu: Miguel Ángel Gatón
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.

  1.   José Ricardo dijo

    Daha kolay:

    kedi distros.txt | xargs -n 100

  2.   ¿ dijo

    Bir .odt dosyasında her sayfada 2 sütunum varsa, şöyle okurlar:

    s. 1
    sütun 1 sütun 2
    s. 2
    sütun 3 sütun 4
    vb.

    Her bir sütunu diğerinin altına nasıl getiririm?
    sütun 1
    sütun 2
    sütun 3
    sütun 4
    vb.

  3.   sulu dijo

    Daha kolay:

    Sekmelerle ayırmak istiyorsanız:
    Yazarsınız: paste -s distros.txt
    Aldığınız: archlinux debian ubuntu kaos fedora slackware gentoo

    Boşluklarla ayrılmasını istiyorsanız:
    Yazarsınız: yapıştır -s -d »» distros.txt
    Aldığınız: archlinux debian ubuntu kaos fedora slackware gentoo

    Virgülle ayırmak istiyorsanız:
    Yazarsınız: yapıştır -s -d, distros.txt
    Aldığınız: archlinux, debian, ubuntu, kaos, fedora, slackware, gentoo

    Macun, kedi, awk ve diğer arkadaşlarla, biraz ustalıkla hayatınızı zorlaştırmadan birçok faydalı kombinasyon yapabilirsiniz.

    Her şey harika devam etsin, Portal programlarındaki ödül için tebrikler!

    1.    dhunter dijo

      Kısacası kremi sed, awk, cut, sort, uniq kullanıyorum, ancak ne yapabileceğini gösterdiğin için teşekkürler, yapıştırmaya hiç dikkat etmemiştim. Slds.

  4.   Tebris dijo

    kedi dosya.txt | xargs

    kar.

  5.   Cristianhcd dijo

    Bu [transpoze] için her zaman excel kullanıyorum ... çok kullanışlı

  6.   Bruno cascio dijo

    Başka bir değişken:

    kedi distros.txt | tr «\ n» »«

  7.   Joaquin dijo

    Her yorumda HaHaHa, aynısını yapmanın farklı bir yolu!

  8.   Jose GDF dijo

    Ve bunun tersini yapmak nasıl olurdu? Yani, boşluklarla ayrılmış bir kelime satırını bir sütuna dönüştürmek.

    1.    sulu dijo

      Çok kolay, bu sefer awk ile.
      Alanların sekmelerle veya boşluklarla ayrıldığını varsayarsak, ki bu en yaygın olanıdır (virgül veya başka bir şey varsa, dikkate alınmalı ve gösterilmelidir) ve dosya artık şunları içerir: archlinux debian ubuntu kaos fedora slackware gentoo

      Awk bize doğrudan istediğimiz alanı verdiğinden, sonuna kadar tek tek yinelemeli olarak göstermesini sağlamalıyız. 7 alan vardır çünkü bu NF'nin değeridir (Alan sayısı). Sayacı i = 1 olarak ayarladık, böylece bize ilk alanı ($ 1) gösterecek ve onu son alanı (NF) aşmadan bir birim (i ++ kullanarak) artırmalıyız.

      awk '{for (i = 1; i <= NF; i ++) {print $ i}}' distros.txt

      1.    Etemenanki dijo

        Her iki duyu için de işe yarayan en pratik, hatırlaması kolay yol şudur:
        kedi distros.txt | tr '\ n' '' ← Yatay stdout çıkışı (Yukarıda zaten tartışılmıştır)
        kedi distros.txt | tr '' '\ n' ← Dikey standart çıkış çıkışı

        Selamlar!

    2.    sulu dijo

      Kesinlikle Etemenanki'nin çözümü, her iki şekilde de, yalnızca satırdan sütuna basit bir dönüşüm veya tam tersi istiyorsanız iyidir.

    3.    Jose GDF dijo

      Cevap verdiğiniz için hepinize teşekkürler. Bunları yapacağım bir sonraki senaryoda uygulamaya koyacağım.

      Selamlar.

  9.   Gato dijo

    Ve sadece yaparsan:
    echo $ (cat distros.txt)

  10.   anson rodriguez dijo

    Daha da kolay:
    awk '{printf $ 0 ″ «}' distros.txt