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.
vieglāk:
kaķu distros.txt | xargs-n 100
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
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!
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.
kaķu fails.txt | xargs
Peļņa.
Es vienmēr izmantoju excel šim [transponēt] ... ļoti noderīgi
Vēl viens variants:
kaķu distros.txt | tr «\ n» »«
HaHaHa katrā komentārā, atšķirīgs veids, kā darīt to pašu!
Un kā rīkoties pretēji, kā tas būtu? Tas ir, ar atstarpēm atdalītas vārdu rindas pārveidošana kolonnā.
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
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!
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.
Paldies visiem par atsaucību. Es tos pielietošu nākamajā scenārijā, kuru es daru.
Sveicieni.
Un, ja jūs tikai darāt:
echo $ (kaķu distros.txt)
Vēl vieglāk:
awk '{printf $ 0 ″ «}' distros.txt