Bash: zamień kolumnę tekstu na wiersz

Załóżmy, że mamy plik tekstowy o nazwie dystrybucja.txt z następującymi:

archlinux
debian
ubuntu
chaos
fedora
slackware
Gento

Chcemy przekształcić to w:

archlinux debian ubuntu kaos fedora slackware gentoo

Aby to osiągnąć, użyjemy pliku dla pętli oraz echo -rz :

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

Gotowe, to załatwia sprawę 🙂

To pokaże nam pożądany wynik w terminalu, jeśli z drugiej strony chcemy, aby został zapisany w innym pliku .txt, przekierowujemy wyjście:

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

I voila 🙂

Cóż, nic, mam nadzieję, że uznasz to za przydatne. Ważne, aby wyjaśnić, że można to również zrobić za pomocą wyrażeń regularnych, po prostu nie wiem jak ... ale z wyrażeniami regularnymi można zrobić prawie wszystko hahaha.


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.

  1.   José Ricardo powiedział

    łatwiej:

    kot dystrybucja.txt | xargs -n 100

  2.   ¿ powiedział

    Jeśli w .odt mam 2 kolumny na każdej stronie, czytają tak:

    p. 1
    kol. 1 kol. 2
    p. 2
    kol. 3 kol. 4
    itd.

    Jak ustawić każdą kolumnę pod drugą?
    kol.1
    kol.2
    kol.3
    kol.4
    itd.

  3.   juant powiedział

    Dużo łatwiej:

    Jeśli chcesz, aby były oddzielone tabulatorami:
    Piszesz: wklej -s distros.txt
    Otrzymasz: archlinux debian ubuntu kaos fedora slackware gentoo

    Jeśli chcesz, aby był oddzielony spacjami:
    Piszesz: wklej -s -d »» distros.txt
    Otrzymasz: archlinux debian ubuntu kaos fedora slackware gentoo

    Jeśli chcesz, aby był oddzielony przecinkami:
    Piszesz: wklej -s -d, distros.txt
    Otrzymujesz: archlinux, debian, ubuntu, kaos, fedora, slackware, gentoo

    Z pastą, kotem, awk i innymi przyjaciółmi, przy odrobinie pomysłowości możesz stworzyć wiele użytecznych kombinacji bez komplikowania sobie życia.

    Niech wszystko będzie kontynuowane świetnie, gratulujemy nagrody w Portalprogramas!

    1.    łowca powiedział

      Używałem sed, awk, cut, sort, uniq, w skrócie kremu, ale nigdy nie zwracałem uwagi na pastę, dzięki za pokazanie, co potrafi. Slds.

  4.   Tabrís powiedział

    cat plik.txt | xargs

    zysk.

  5.   Cristianhcd powiedział

    Zawsze używam programu Excel do tego [transpozycji] ... bardzo przydatne

  6.   Bruno cascio powiedział

    Inny wariant:

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

  7.   Joaquin powiedział

    HaHaHa w każdym komentarzu, inny sposób robienia tego samego!

  8.   Jose GDF powiedział

    I odwrotnie, jak by to było? Oznacza to zamianę wiersza słów oddzielonych spacjami na kolumnę.

    1.    juant powiedział

      Również łatwo, tym razem z awk.
      Zakładając, że pola są oddzielone tabulatorami lub spacjami, co jest najbardziej powszechne (jeśli jest to przecinkami lub czymś innym, należy to wziąć pod uwagę i wskazać) i że plik zawiera teraz: archlinux debian ubuntu kaos fedora slackware gentoo

      Ponieważ awk bezpośrednio podaje nam żądane pole, musimy iteracyjnie pokazywać nam jedno po drugim, aż do końca. Istnieje 7 pól, ponieważ jest to wartość NF (liczba pól). Ustawiamy licznik i = 1 tak, aby pokazywał nam pierwsze pole ($ 1) i musimy sprawić, by zwiększył się o jedną jednostkę (używając i ++) bez przekraczania ostatniego pola (NF).

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

      1.    Etemenanki powiedział

        Najbardziej praktyczny sposób, łatwy do zapamiętania i działający na oba zmysły, to:
        cat distros.txt | tr '\ n' '' ← Wyjście poziome standardowe wyjście (już omówione powyżej)
        cat distros.txt | tr '' '\ n' ← Wyjście na standardowe wyjście pionowe

        Pozdrowienia!

    2.    juant powiedział

      Zdecydowanie rozwiązanie Etemenanki, w obie strony, jest w porządku, jeśli interesuje Cię tylko prosta transformacja z wiersza na kolumnę i odwrotnie.

    3.    Jose GDF powiedział

      Dziękuję wszystkim za odpowiedź. W następnym scenariuszu zastosuję je w praktyce.

      Pozdrowienia.

  9.   Kot powiedział

    A jeśli tylko:
    echo $ (cat distros.txt)

  10.   Anson rodriguez powiedział

    Jeszcze łatwiej:
    awk '{printf $ 0 ″ «}' distros.txt