Bash: Shndërroni një kolonë të tekstit në një rresht

Supozoni se kemi një skedar teksti të quajtur distros.txt me sa vijon:

archlinux
Debian
ubuntu
këmishë
fedora
xhama
gentoo

Dhe ne duam ta kthejmë atë në:

archlinux debian ubuntu ka ushqyer slackware gentoo

Për të arritur këtë ne do të përdorim një për lak dhe një jehonë -n :

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

Bërë, kjo bën hile

Kjo do të na tregojë rezultatin e dëshiruar në terminal, nëse nga ana tjetër duam që ai të ruhet në një skedar tjetër .txt ne e ridrejtojmë prodhimin:

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

Dhe voila

Epo asgjë, shpresoj se ju duket e dobishme. E vlefshme për të sqaruar se mund të bëhet edhe me shprehje të rregullta, thjesht nuk e di se si ... por, me shprehje të rregullta mund të bësh pothuajse gjithçka hahaha.


Lini komentin tuaj

Adresa juaj e emailit nuk do të publikohet. Fusha e kërkuar janë shënuar me *

*

*

  1. Përgjegjës për të dhënat: Miguel Ángel Gatón
  2. Qëllimi i të dhënave: Kontrolloni SPAM, menaxhimin e komenteve.
  3. Legjitimimi: Pëlqimi juaj
  4. Komunikimi i të dhënave: Të dhënat nuk do t'u komunikohen palëve të treta përveç me detyrim ligjor.
  5. Ruajtja e të dhënave: Baza e të dhënave e organizuar nga Occentus Networks (BE)
  6. Të drejtat: Në çdo kohë mund të kufizoni, rikuperoni dhe fshini informacionin tuaj.

  1.   Jose Ricardo dijo

    më lehtë:

    distros macet.txt | xargat -n 100

  2.   ¿ dijo

    Nëse në një .odt kam 2 kolona në secilën faqe, ata lexojnë kështu:

    f. 1
    kol.1 kol.2
    f. 2
    kol.3 kol.4
    etj.

    Si mund ta marr secilën kolonë poshtë tjetrës?
    kol.1
    kol.2
    kol.3
    kol.4
    etj.

  3.   i lëngshëm dijo

    Shumë më e lehtë:

    Nëse dëshironi të ndahen me skeda:
    Ju shkruani: ngjitni -s distros.txt
    Ju merrni: archlinux debian ubuntu kaos fedora slackware gentoo

    Nëse dëshironi që të ndahet me hapësira:
    Ju shkruani: ngjitni -s -d »» distros.txt
    Ju merrni: archlinux debian ubuntu kaos fedora slackware gentoo

    Nëse dëshironi që të ndahet me presje:
    Ju shkruani: ngjitni -s -d, distros.txt
    Ju merrni: archlinux, debian, ubuntu, kaos, fedora, slackware, gentoo

    Me paste, mace, awk dhe miq të tjerë, me pak zgjuarsi mund të bëni shumë kombinime të dobishme pa e ndërlikuar jetën tuaj.

    Le të vazhdojë gjithçka shkëlqyeshëm, urime për çmimin në Portalprogramas!

    1.    dhunues dijo

      Unë kam qenë duke përdorur sed, awk, cut, sort, uniq, me pak fjalë krem, por unë kurrë nuk kam kushtuar vëmendje për të ngjitur, faleminderit për të treguar se çfarë mund të bëjë. Slds.

  4.   tabris dijo

    skedar mace.txt | xhargat

    fitim.

  5.   Cristianhcd dijo

    Unë gjithmonë përfundoj duke përdorur excel për këtë [transpozim] ... shumë i dobishëm

  6.   Bruno cascio dijo

    Një variant tjetër:

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

  7.   Joaquin dijo

    HaHaHa në çdo koment, një mënyrë tjetër për të bërë të njëjtën gjë!

  8.   Jose GDF dijo

    Dhe për të bërë të kundërtën, si do të ishte? Kjo është, shndërrimi i një linje fjalësh të ndara me hapësira në një kolonë.

    1.    i lëngshëm dijo

      Shumë e lehtë, këtë herë me awk.
      Duke supozuar që fushat janë të ndara me skeda ose hapësira, e cila është më e zakonshmja (nëse është me presje ose diçka tjetër, duhet të merret parasysh dhe të tregohet), dhe se skedari tani përmban: archlinux debian ubuntu kaos fedora slackware gentoo

      Meqenëse awk na jep drejtpërsëdrejti fushën që duam, duhet ta bëjmë që të na tregojë në mënyrë përsëritëse një nga një deri në fund. Ka 7 fusha sepse kjo është vlera e NF (Numri i fushave). Vendosim numëruesin i = 1, në mënyrë që të na tregojë fushën e parë ($ 1) dhe duhet ta marrim që të rritet me një njësi (duke përdorur i ++) pa tejkaluar fushën e fundit (NF).

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

      1.    Etemenanki dijo

        Mënyra më praktike, e lehtë për tu mbajtur mend dhe që funksionon për të dy shqisat është kjo:
        distros macet.txt | tr '\ n' '' output Dalja horizontale e stdout (Diskutuar tashmë më lart)
        distros macet.txt | tr '' '\ n' output Dalje vertikale e ndalimit

        Përshëndetje!

    2.    i lëngshëm dijo

      Padyshim që zgjidhja e Etemenanki, të dy mënyrat, është e mirë nëse ju intereson vetëm një transformim i thjeshtë nga rreshti në kolonë dhe anasjelltas.

    3.    Jose GDF dijo

      Faleminderit të gjithëve për përgjigjen. Unë do t'i vë ato në praktikë në skenarin tjetër që bëj.

      Përshëndetje.

  9.   Gato dijo

    Dhe nëse bëni vetëm:
    jehonë $ (shpërndarja e maceve.txt)

  10.   Anson rodriguez dijo

    Edhe më lehtë:
    awk '{printf $ 0 ″ «}} distros.txt