Anta at vi har en tekstfil kalt distros.txt med følgende:
Arch Linux
debian
ubuntu
skjorten
fedora
slackware
gentoo
Og vi vil gjøre det om til:
archlinux debian ubuntu kaos fedora slackware gentoo
For å oppnå dette vil vi bruke en for løkke og en ekko -n :
for i in `< distros.txt`; do echo -n ${i}" ";done; echo ""
Ferdig, dette gjør susen 🙂
Dette viser oss ønsket resultat i terminalen, hvis vi derimot vil at den skal lagres i en annen .txt-fil, omdirigerer vi utdataene:
for i in `< distros.txt`; do echo -n ${i}" ";done; echo "" > distros-nuevas.txt
Og voila 🙂
Vel ingenting, jeg håper du synes det er nyttig. Gyldig for å avklare at det også kan gjøres med regulære uttrykk, jeg vet bare ikke hvordan ... men med vanlige uttrykk kan du gjøre nesten alt hahaha.
lettere:
cat distros.txt | xargs -n 100
Hvis jeg har to kolonner på hver side, leser de slik:
s. 1
kol. 1 kol. 2
s. 2
kol. 3 kol. 4
og så videre
Hvordan får jeg hver kolonne under den andre?
kol. 1
kol. 2
kol. 3
kol. 4
og så videre
Mye enklere:
Hvis du vil ha den atskilt med faner:
Du skriver: lim-distros.txt
Du får: archlinux debian ubuntu kaos fedora slackware gentoo
Hvis du vil at den skal være atskilt med mellomrom:
Du skriver: lim -s -d »» distros.txt
Du får: archlinux debian ubuntu kaos fedora slackware gentoo
Hvis du vil at den skal skilles med komma:
Du skriver: lim -s -d, distros.txt
Du får: archlinux, debian, ubuntu, kaos, fedora, slackware, gentoo
Med pasta, katt, awk og andre venner, med litt oppfinnsomhet kan du lage mange nyttige kombinasjoner uten å komplisere livet ditt.
La alt fortsette bra, gratulerer med prisen i Portalprogramas!
Jeg har brukt sed, awk, cut, sort, uniq, kort sagt kremen, men jeg hadde aldri lagt merke til å lime inn, takk for at du viste hva den kan gjøre. Slds.
cat file.txt | xargs
profitt.
Jeg ender alltid med å bruke excel for dette [transponere] ... veldig nyttig
En annen variant:
cat distros.txt | tr «\ n» »«
HaHaHa i hver kommentar, en annen måte å gjøre det samme på!
Og for å gjøre det motsatte, hvordan ville det være? Det vil si å konvertere en ordlinje atskilt med mellomrom til en kolonne.
Lett også, denne gangen med awk.
Forutsatt at feltene er atskilt med faner eller mellomrom, som er det vanligste (hvis det er med komma eller noe annet, må det tas i betraktning og angis), og at filen nå inneholder: archlinux debian ubuntu kaos fedora slackware gentoo
Siden awk direkte gir oss det feltet vi ønsker, må vi gjøre det iterativt vise oss en etter en til slutten. Det er 7 felt fordi dette er verdien av NF (antall felt). Vi setter telleren i = 1, slik at den viser oss det første feltet ($ 1), og vi må få det til å øke med en enhet (ved hjelp av i ++) uten å overskride det siste feltet (NF).
awk '{for (i = 1; i <= NF; i ++) {print $ i}}' distros.txt
Den mest praktiske måten, lett å huske, og som fungerer for begge sanser, er denne:
cat distros.txt | tr '\ n' '' ← Horisontal utgang (allerede omtalt ovenfor)
cat distros.txt | tr '' '\ n' ← Vertikal utgang
Greetings!
Definitivt Etemenankis løsning, begge veier, er greit hvis du bare vil ha en enkel transformasjon fra rad til kolonne og omvendt.
Takk alle for svaret. Jeg vil sette dem i praksis i neste manus jeg gjør.
Hilsener.
Og hvis du bare gjør:
echo $ (cat distros.txt)
Enda enklere:
awk '{printf $ 0 ″ «}' distros.txt