Bash: stolpec besedila pretvori v vrstico

Recimo, da imamo imenovano besedilno datoteko distros.txt z naslednjim:

archlinux
debian
ubuntu
srajca
Fedora
slackware
gentoo

In to želimo spremeniti v:

slackware gentoo -

Da bi to dosegli, bomo uporabili a za zanko in odmev -n :

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

Končano, s tem je trik 🙂

To nam bo pokazalo želeni rezultat v terminalu, če pa po drugi strani želimo, da se shrani v drugo datoteko .txt, preusmerimo izhod:

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

In voila 🙂

No nič, upam, da se vam zdi koristno. Velja pojasniti, da je to mogoče storiti tudi z regularnimi izrazi, samo ne vem kako ... ampak z regularnimi izrazi lahko naredite skoraj vse hahaha.


Vsebina članka je v skladu z našimi načeli uredniška etika. Če želite prijaviti napako, kliknite tukaj.

15 komentarja, pustite svojega

Pustite svoj komentar

Vaš e-naslov ne bo objavljen.

*

*

  1. Za podatke odgovoren: Miguel Ángel Gatón
  2. Namen podatkov: Nadzor neželene pošte, upravljanje komentarjev.
  3. Legitimacija: Vaše soglasje
  4. Sporočanje podatkov: Podatki se ne bodo posredovali tretjim osebam, razen po zakonski obveznosti.
  5. Shranjevanje podatkov: Zbirka podatkov, ki jo gosti Occentus Networks (EU)
  6. Pravice: Kadar koli lahko omejite, obnovite in izbrišete svoje podatke.

  1.   Jose Ricardo je dejal

    lažje:

    mačka distros.txt | xargs -n 100

  2.   ¿ je dejal

    Če imam v .odt na vsaki strani 2 stolpca, se berejo takole:

    str.1
    stolpec 1 stolpec 2
    str.2
    stolpec 3 stolpec 4
    in tako naprej

    Kako pridem vsak stolpec pod drugega?
    stolpec 1
    stolpec 2
    stolpec 3
    stolpec 4
    in tako naprej

  3.   juant je dejal

    Veliko lažje:

    Če želite ločiti z zavihki:
    Pišete: paste -s distros.txt
    Dobite: archlinux debian ubuntu kaos fedora slackware gentoo

    Če ga želite ločiti s presledki:
    Pišete: paste -s -d »» distros.txt
    Dobite: archlinux debian ubuntu kaos fedora slackware gentoo

    Če ga želite ločiti z vejicami:
    Pišete: paste -s -d, distros.txt
    Dobite: archlinux, debian, ubuntu, kaos, fedora, slackware, gentoo

    S pasto, mačko, awkom in drugimi prijatelji lahko z malo iznajdljivosti sestavite veliko uporabnih kombinacij, ne da bi si zapletli življenje.

    Naj se vse nadaljuje super, čestitamo za nagrado v Portalprogramas!

    1.    dhunter je dejal

      Uporabljal sem sed, awk, cut, sort, uniq, skratka kremo, vendar nikoli nisem bil pozoren na lepljenje, hvala za prikaz, kaj zmore. Slds.

  4.   Tabris je dejal

    mačka file.txt | xargs

    dobiček.

  5.   Cristianhcd je dejal

    Za ta [prenos] vedno uporabim excel ... zelo koristen

  6.   Bruno cascio je dejal

    Druga varianta:

    mačka distros.txt | tr «\ n» »«

  7.   Joaquin je dejal

    HaHaHa v vsakem komentarju, drugačen način za enako!

  8.   Jose GDF je dejal

    In če bi storili ravno nasprotno, kako bi bilo? Se pravi pretvorba vrstice besed, ločenih s presledki, v stolpec.

    1.    juant je dejal

      Tudi enostavno, tokrat z awk.
      Ob predpostavki, da so polja ločena z zavihki ali presledki, kar je najpogosteje (če je z vejicami ali kaj drugega, je treba to upoštevati in navesti) in da datoteka zdaj vsebuje: archlinux debian ubuntu kaos fedora slackware gentoo

      Ker nam awk neposredno daje želeno polje, ga moramo iteracijsko prikazati enega za drugim do konca. Obstaja 7 polj, ker je to vrednost NF (število polj). Nastavimo števec i = 1, tako da nam prikaže prvo polje ($ 1) in ga moramo povečati za eno enoto (z uporabo i ++), ne da bi presegli zadnje polje (NF).

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

      1.    Etemenanki je dejal

        Najbolj praktičen način, ki si ga je enostavno zapomniti in ki deluje tako za oba čutila, je naslednji:
        mačka distros.txt | tr '\ n' '' ← Horizontalni stdout izhod (že obravnavano zgoraj)
        mačka distros.txt | tr '' '\ n' ← Navpični izhodni izhod

        Lep pozdrav!

    2.    juant je dejal

      Vsekakor je Etemenankijeva rešitev v obe smeri v redu, če želite le preprosto preoblikovanje iz vrstice v stolpec in obratno.

    3.    Jose GDF je dejal

      Hvala vsem, da ste se odzvali. V praksi jih bom uporabil v naslednjem scenariju.

      Lep pozdrav.

  9.   Gato je dejal

    In če samo:
    echo $ (mačka distros.txt)

  10.   Anson rodriguez je dejal

    Še lažje:
    awk '{printf $ 0 ″ «}' distros.txt

bool (true)