Bash: Konvertáljon egy szövegoszlopot sorokká

Tegyük fel, hogy van egy szöveges fájlunk distros.txt a következőkkel:

archlinux
debian
ubuntu
káosz
fedora
slackware
gentoo

És ezt szeretnénk átalakítani:

archlinux debian ubuntu, mint a fedora slackware gentoo

Ennek elérésére a hurokhoz és egy visszhang -n :

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

Kész, ez megteszi a trükköt 🙂

Ez megmutatja nekünk a kívánt eredményt a terminálban, ha viszont azt akarjuk, hogy egy másik .txt fájlba mentse, akkor átirányítjuk a kimenetet:

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

És voila 🙂

Nos, semmi, remélem, hasznosnak találja. Érvényes annak tisztázására, hogy rendszeres kifejezésekkel is meg lehet csinálni, csak nem tudom, hogyan ... de a reguláris kifejezésekkel szinte mindent megtehetsz hahaha.


Hagyja megjegyzését

E-mail címed nem kerül nyilvánosságra. Kötelező mezők vannak jelölve *

*

*

  1. Az adatokért felelős: Miguel Ángel Gatón
  2. Az adatok célja: A SPAM ellenőrzése, a megjegyzések kezelése.
  3. Legitimáció: Az Ön beleegyezése
  4. Az adatok közlése: Az adatokat csak jogi kötelezettség alapján továbbítjuk harmadik felekkel.
  5. Adattárolás: Az Occentus Networks (EU) által üzemeltetett adatbázis
  6. Jogok: Bármikor korlátozhatja, helyreállíthatja és törölheti adatait.

  1.   Joseph Ricardo dijo

    könnyebb:

    macska distros.txt | xargs -n 100

  2.   ¿ dijo

    Ha egy .odt fájlban minden oldalon van 2 oszlop, akkor így olvasnak:

    1. o
    1. oszlop 2. oszlop
    2. o
    3. oszlop 4. oszlop
    elvisszük helyi falvakba ahol megismerkedhet az őslakosok kultúrájával; ...

    Hogyan kerülhetek az egyes oszlopok a másik alá?
    1. oszlop
    2. oszlop
    3. oszlop
    4. oszlop
    elvisszük helyi falvakba ahol megismerkedhet az őslakosok kultúrájával; ...

  3.   juant dijo

    Sokkal könnyebb:

    Ha fülekkel akarja elválasztani:
    Azt írod: paste -s distros.txt
    Kapsz: archlinux debian ubuntu kaos fedora slackware gentoo

    Ha szóközökkel szeretné elválasztani:
    Azt írod: paste -s -d »» distros.txt
    Kapsz: archlinux debian ubuntu kaos fedora slackware gentoo

    Ha vesszővel szeretné elválasztani:
    Azt írja: beilleszt -s -s -d, distros.txt
    Kapsz: archlinux, debian, ubuntu, kaos, fedora, slackware, gentoo

    A paszta, a macska, az awk és más barátok segítségével egy kis találékonysággal sok hasznos kombinációt készíthet anélkül, hogy bonyolítaná az életét.

    Hadd folytatódjon minden remekül, gratulálok a Portalprogramas-díjhoz!

    1.    vadász dijo

      Röviden a krémet használtam sed, awk, cut, sort, uniq, de soha nem figyeltem a pasztára, köszönöm, hogy megmutattam, mire képes. Slds.

  4.   tabris dijo

    macska fájl.txt | xargs

    nyereség.

  5.   Cristianhcd dijo

    Mindig az excelt használom erre az [átültetésre] ... nagyon hasznos

  6.   Bruno cascio dijo

    Egy másik változat:

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

  7.   Joaquin dijo

    HaHaHa minden megjegyzésben, ugyanúgy más módon!

  8.   Jose GDF dijo

    És az ellenkezőjét téve, milyen lenne? Vagyis a szóközökkel elválasztott szavak sorának oszlopká alakítása.

    1.    juant dijo

      Könnyű is, ezúttal awk-val.
      Feltéve, hogy a mezőket tabulátorokkal vagy szóközökkel választják el, ami a leggyakoribb (ha vesszővel vagy valami mással kell, ezt figyelembe kell venni és meg kell jelölni), és hogy a fájl most tartalmazza: archlinux debian ubuntu kaos fedora slackware gentoo

      Mivel az awk közvetlenül megadja nekünk a kívánt mezőt, meg kell tennünk, hogy iteratívan megmutassa számunkra a végéig. 7 mező van, mert ez az NF (mezők száma) értéke. Az i = 1 számlálót úgy állítottuk be, hogy az megmutassa az első mezőt ($ 1), és el kell érnünk, hogy egy egységgel növekedjen (az i ++ használatával) anélkül, hogy túllépnénk az utolsó mezőt (NF).

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

      1.    Étemenanki dijo

        A legpraktikusabb, könnyen megjegyezhető és mindkét érzék számára megfelelő módszer:
        macska distros.txt | tr '\ n' '' ← Vízszintes szabványos kimenet (már fentebb tárgyaltuk)
        macska distros.txt | tr '' '\ n' ← Függőleges szabványos kimenet

        Üdvözlet!

    2.    juant dijo

      Mindenképpen jó az Etemenanki megoldása, ha csak egyszerű átalakítást szeretne sorról oszlopra és fordítva.

    3.    Jose GDF dijo

      Köszönöm mindenkinek, hogy válaszolt. A következő forgatókönyvben gyakorlatba ültetem őket.

      Üdvözlet.

  9.   Gato dijo

    És ha csak:
    echo $ (macska distros.txt)

  10.   Anson rodriguez dijo

    Még könnyebb:
    awk '{printf $ 0 ″ «}' distros.txt