Bash: konvertējiet teksta kolonnu par rindu

Pieņemsim, ka mums ir teksta fails ar nosaukumu distros.txt ar sekojošo:

Archlinux
Debian
Ubuntu
haoss
Fedora
slackware
gentoo

Un mēs vēlamies to pārvērst:

archlinux debian ubuntu kaos fedora slackware gentoo

Lai to panāktu, mēs izmantosim a par cilpu un atbalss -n :

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

Gatavs, tas izdara triku 🙂

Tas mums parādīs vēlamo rezultātu terminālā, ja, no otras puses, mēs vēlamies, lai tas tiktu saglabāts citā .txt failā, mēs novirzīsim izvadi:

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

Un voila 🙂

Nu nekas, es ceru, ka jums tas noderēs. Der, lai precizētu, ka to var izdarīt arī ar regulārām izteiksmēm, es vienkārši nezinu, kā ... bet, izmantojot regulāras izteiksmes, jūs varat darīt gandrīz visu hahaha.


Atstājiet savu komentāru

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti ar *

*

*

  1. Atbildīgais par datiem: Migels Ángels Gatóns
  2. Datu mērķis: SPAM kontrole, komentāru pārvaldība.
  3. Legitimācija: jūsu piekrišana
  4. Datu paziņošana: Dati netiks paziņoti trešām personām, izņemot juridiskus pienākumus.
  5. Datu glabāšana: datu bāze, ko mitina Occentus Networks (ES)
  6. Tiesības: jebkurā laikā varat ierobežot, atjaunot un dzēst savu informāciju.

  1.   Hosē Rikardo teica

    vieglāk:

    kaķu distros.txt | xargs-n 100

  2.   ¿ teica

    Ja .odt failā katrā lapā ir 2 slejas, viņi lasa šādi:

    1. lpp
    kol.1. kol.2
    2. lpp
    kol.3. kol.4
    un tā joprojām

    Kā es varu iegūt katru kolonnu zem otras?
    kol.1
    kol.2
    kol.3
    kol.4
    un tā joprojām

  3.   sulīgs teica

    Daudz vieglāk:

    Ja vēlaties atdalīt ar cilnēm:
    Jūs rakstāt: paste -s distros.txt
    Jūs saņemat: archlinux debian ubuntu kaos fedora slackware gentoo

    Ja vēlaties, lai to atdala atstarpes:
    Jūs rakstāt: paste -s -d »» distros.txt
    Jūs saņemat: archlinux debian ubuntu kaos fedora slackware gentoo

    Ja vēlaties, lai to atdala ar komatiem:
    Jūs rakstāt: ielīmējiet -s -d, distros.txt
    Jūs saņemat: archlinux, debian, ubuntu, kaos, fedora, slackware, gentoo

    Izmantojot pastu, kaķi, awk un citus draugus, ar nelielu atjautību jūs varat izveidot daudzas noderīgas kombinācijas, nesarežģot savu dzīvi.

    Lai viss turpinās lieliski, apsveicu ar balvu Portalprogramas!

    1.    dunter teica

      Esmu lietojis sed, awk, cut, sort, uniq, īsi sakot, krēmu, taču nekad nebiju pievērsis uzmanību pastai, paldies, ka parādīji, ko tas spēj. Slds.

  4.   tabris teica

    kaķu fails.txt | xargs

    Peļņa.

  5.   Cristianhcd teica

    Es vienmēr izmantoju excel šim [transponēt] ... ļoti noderīgi

  6.   Bruno Kasio teica

    Vēl viens variants:

    kaķu distros.txt | tr «\ n» »«

  7.   Joaquin teica

    HaHaHa katrā komentārā, atšķirīgs veids, kā darīt to pašu!

  8.   Hosē GDF teica

    Un kā rīkoties pretēji, kā tas būtu? Tas ir, ar atstarpēm atdalītas vārdu rindas pārveidošana kolonnā.

    1.    sulīgs teica

      Arī viegli, šoreiz ar awk.
      Pieņemot, ka lauki ir atdalīti ar cilnēm vai atstarpēm, kas ir visizplatītākā (ja tas ir ar komatiem vai ko citu, tas ir jāņem vērā un jānorāda) un ka failā tagad ir: archlinux debian ubuntu kaos fedora slackware gentoo

      Tā kā awk tieši dod mums vēlamo lauku, mums tas ir jāpieliek iteratīvi, lai parādītu mums pa vienam līdz beigām. Ir 7 lauki, jo tā ir NF (lauku skaits) vērtība. Mēs iestatījām skaitītāju i = 1 tā, lai tas parādītu mums pirmo lauku ($ 1), un mums ir jāpanāk, lai tas palielinātu par vienu vienību (izmantojot i ++), nepārsniedzot pēdējo lauku (NF).

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

      1.    Etemenanki teica

        Praktiskākais veids, viegli atcerēties un tas darbojas abām maņām:
        kaķu distros.txt | tr '\ n' '' ← Horizontālā standarta izeja (Jau apspriests iepriekš)
        kaķu distros.txt | tr '' '\ n' ← Vertikālā standarta izeja

        Sveicieni!

    2.    sulīgs teica

      Noteikti Etemenanki risinājums abos veidos ir labs, ja jūs interesē tikai vienkārša pārveidošana no rindas uz kolonnu un otrādi.

    3.    Hosē GDF teica

      Paldies visiem par atsaucību. Es tos pielietošu nākamajā scenārijā, kuru es daru.

      Sveicieni.

  9.   Gato teica

    Un, ja jūs tikai darāt:
    echo $ (kaķu distros.txt)

  10.   Ansons Rodrigess teica

    Vēl vieglāk:
    awk '{printf $ 0 ″ «}' distros.txt