Recimo, da imamo imenovano besedilno datoteko distros.txt z naslednjim:
archlinux
debian
ubuntu
srajca
Fedora
slackware
gentoo
In to želimo spremeniti v:
slackware gentoo -
Da bi to dosegli, bomo uporabili a za zanko in odmev -n :
for i in `< distros.txt`; do echo -n ${i}" ";done; echo ""
Končano, s tem je trik 🙂
To nam bo pokazalo želeni rezultat v terminalu, če pa po drugi strani želimo, da se shrani v drugo datoteko .txt, preusmerimo izhod:
for i in `< distros.txt`; do echo -n ${i}" ";done; echo "" > distros-nuevas.txt
In voila 🙂
No nič, upam, da se vam zdi koristno. Velja pojasniti, da je to mogoče storiti tudi z regularnimi izrazi, samo ne vem kako ... ampak z regularnimi izrazi lahko naredite skoraj vse hahaha.
lažje:
mačka distros.txt | xargs -n 100
Če imam v .odt na vsaki strani 2 stolpca, se berejo takole:
str.1
stolpec 1 stolpec 2
str.2
stolpec 3 stolpec 4
in tako naprej
Kako pridem vsak stolpec pod drugega?
stolpec 1
stolpec 2
stolpec 3
stolpec 4
in tako naprej
Veliko lažje:
Če želite ločiti z zavihki:
Pišete: paste -s distros.txt
Dobite: archlinux debian ubuntu kaos fedora slackware gentoo
Če ga želite ločiti s presledki:
Pišete: paste -s -d »» distros.txt
Dobite: archlinux debian ubuntu kaos fedora slackware gentoo
Če ga želite ločiti z vejicami:
Pišete: paste -s -d, distros.txt
Dobite: archlinux, debian, ubuntu, kaos, fedora, slackware, gentoo
S pasto, mačko, awkom in drugimi prijatelji lahko z malo iznajdljivosti sestavite veliko uporabnih kombinacij, ne da bi si zapletli življenje.
Naj se vse nadaljuje super, čestitamo za nagrado v Portalprogramas!
Uporabljal sem sed, awk, cut, sort, uniq, skratka kremo, vendar nikoli nisem bil pozoren na lepljenje, hvala za prikaz, kaj zmore. Slds.
mačka file.txt | xargs
dobiček.
Za ta [prenos] vedno uporabim excel ... zelo koristen
Druga varianta:
mačka distros.txt | tr «\ n» »«
HaHaHa v vsakem komentarju, drugačen način za enako!
In če bi storili ravno nasprotno, kako bi bilo? Se pravi pretvorba vrstice besed, ločenih s presledki, v stolpec.
Tudi enostavno, tokrat z awk.
Ob predpostavki, da so polja ločena z zavihki ali presledki, kar je najpogosteje (če je z vejicami ali kaj drugega, je treba to upoštevati in navesti) in da datoteka zdaj vsebuje: archlinux debian ubuntu kaos fedora slackware gentoo
Ker nam awk neposredno daje želeno polje, ga moramo iteracijsko prikazati enega za drugim do konca. Obstaja 7 polj, ker je to vrednost NF (število polj). Nastavimo števec i = 1, tako da nam prikaže prvo polje ($ 1) in ga moramo povečati za eno enoto (z uporabo i ++), ne da bi presegli zadnje polje (NF).
awk '{for (i = 1; i <= NF; i ++) {print $ i}}' distros.txt
Najbolj praktičen način, ki si ga je enostavno zapomniti in ki deluje tako za oba čutila, je naslednji:
mačka distros.txt | tr '\ n' '' ← Horizontalni stdout izhod (že obravnavano zgoraj)
mačka distros.txt | tr '' '\ n' ← Navpični izhodni izhod
Lep pozdrav!
Vsekakor je Etemenankijeva rešitev v obe smeri v redu, če želite le preprosto preoblikovanje iz vrstice v stolpec in obratno.
Hvala vsem, da ste se odzvali. V praksi jih bom uporabil v naslednjem scenariju.
Lep pozdrav.
In če samo:
echo $ (mačka distros.txt)
Še lažje:
awk '{printf $ 0 ″ «}' distros.txt