Antag, at vi har en tekstfil kaldet distros.txt med følgende:
ArchLinux
debian
ubuntu
Kaos
fedora
Slackware
gentoo
Og vi vil gøre det til:
archlinux debian ubuntu kaos fedora slackware gentoo
For at opnå dette vil vi bruge en til løkke og en ekko -n :
for i in `< distros.txt`; do echo -n ${i}" ";done; echo ""
Udført, dette gør tricket 🙂
Dette viser os det ønskede resultat i terminalen, hvis vi på den anden side vil have det gemt i en anden .txt-fil, omdirigerer vi output:
for i in `< distros.txt`; do echo -n ${i}" ";done; echo "" > distros-nuevas.txt
Og voila 🙂
Nå intet, jeg håber, du finder det nyttigt. Gyldig til at præcisere, at det også kan gøres med regulære udtryk, jeg ved bare ikke hvordan ... men med regelmæssige udtryk kan du gøre næsten alt hahaha.
lettere:
kat distros.txt | xargs -n 100
Hvis jeg i en .odt har 2 kolonner på hver side, læser de sådan:
s. 1
kol. 1 kol. 2
s. 2
kol. 3 kol. 4
etc.
Hvordan får jeg hver kolonne under den anden?
kol. 1
kol. 2
kol. 3
kol. 4
etc.
Meget nemmere:
Hvis du vil adskilt af faner:
Du skriver: indsæt -distros.txt
Du får: archlinux debian ubuntu kaos fedora slackware gentoo
Hvis du vil have det adskilt af mellemrum:
Du skriver: indsæt -s -d »» distros.txt
Du får: archlinux debian ubuntu kaos fedora slackware gentoo
Hvis du vil have det adskilt med kommaer:
Du skriver: indsæt -s -d, distros.txt
Du får: archlinux, debian, ubuntu, kaos, fedora, slackware, gentoo
Med pasta, kat, awk og andre venner med lidt opfindsomhed kan du lave mange nyttige kombinationer uden at komplicere dit liv.
Lad alt fortsætte godt, tillykke med prisen i Portalprogramas!
Jeg har brugt sed, awk, cut, sort, uniq, kort sagt cremen, men jeg havde aldrig været opmærksom på at indsætte, tak for at vise, hvad den kan gøre. Slds.
kattefil.txt | xargs
profit.
Jeg ender altid med at bruge excel til dette [transponere] ... meget nyttigt
En anden variant:
kat distros.txt | tr «\ n» »«
HaHaHa i hver kommentar, en anden måde at gøre det samme på!
Og for at gøre det modsatte, hvordan ville det være? Det vil sige at konvertere en ordlinje adskilt af mellemrum til en kolonne.
Også let, denne gang med awk.
Under forudsætning af at felterne er adskilt af faner eller mellemrum, hvilket er det mest almindelige (hvis det er med kommaer eller noget andet, skal det tages i betragtning og angives), og at filen nu indeholder: archlinux debian ubuntu kaos fedora slackware gentoo
Da awk direkte giver os det felt, vi ønsker, er vi nødt til at gøre det iterativt vise os en efter en indtil slutningen. Der er 7 felter, fordi dette er værdien af NF (antal felter). Vi indstiller tælleren i = 1, så den viser os det første felt ($ 1), og vi skal få det til at stige med en enhed (ved hjælp af i ++) uden at overskride det sidste felt (NF).
awk '{for (i = 1; i <= NF; i ++) {print $ i}}' distros.txt
Den mest praktiske måde, der er let at huske, og som fungerer for begge sanser, er denne:
kat distros.txt | tr '\ n' '' ← Vandret stdout-output (allerede omtalt ovenfor)
kat distros.txt | tr '' '\ n' ← Lodret stdout-output
Greetings!
Absolut Etemenankis løsning, begge veje, er fin, hvis du kun er interesseret i en simpel transformation fra række til kolonne og omvendt.
Tak alle sammen for at svare. Jeg sætter dem i praksis i det næste script, jeg laver.
Greetings.
Og hvis du kun gør:
echo $ (cat distros.txt)
Endnu nemmere:
awk '{printf $ 0 ″ «}' distros.txt