Załóżmy, że mamy plik tekstowy o nazwie dystrybucja.txt z następującymi:
archlinux
debian
ubuntu
chaos
fedora
slackware
Gento
Chcemy przekształcić to w:
archlinux debian ubuntu kaos fedora slackware gentoo
Aby to osiągnąć, użyjemy pliku dla pętli oraz echo -rz :
for i in `< distros.txt`; do echo -n ${i}" ";done; echo ""
Gotowe, to załatwia sprawę 🙂
To pokaże nam pożądany wynik w terminalu, jeśli z drugiej strony chcemy, aby został zapisany w innym pliku .txt, przekierowujemy wyjście:
for i in `< distros.txt`; do echo -n ${i}" ";done; echo "" > distros-nuevas.txt
I voila 🙂
Cóż, nic, mam nadzieję, że uznasz to za przydatne. Ważne, aby wyjaśnić, że można to również zrobić za pomocą wyrażeń regularnych, po prostu nie wiem jak ... ale z wyrażeniami regularnymi można zrobić prawie wszystko hahaha.
łatwiej:
kot dystrybucja.txt | xargs -n 100
Jeśli w .odt mam 2 kolumny na każdej stronie, czytają tak:
p. 1
kol. 1 kol. 2
p. 2
kol. 3 kol. 4
itd.
Jak ustawić każdą kolumnę pod drugą?
kol.1
kol.2
kol.3
kol.4
itd.
Dużo łatwiej:
Jeśli chcesz, aby były oddzielone tabulatorami:
Piszesz: wklej -s distros.txt
Otrzymasz: archlinux debian ubuntu kaos fedora slackware gentoo
Jeśli chcesz, aby był oddzielony spacjami:
Piszesz: wklej -s -d »» distros.txt
Otrzymasz: archlinux debian ubuntu kaos fedora slackware gentoo
Jeśli chcesz, aby był oddzielony przecinkami:
Piszesz: wklej -s -d, distros.txt
Otrzymujesz: archlinux, debian, ubuntu, kaos, fedora, slackware, gentoo
Z pastą, kotem, awk i innymi przyjaciółmi, przy odrobinie pomysłowości możesz stworzyć wiele użytecznych kombinacji bez komplikowania sobie życia.
Niech wszystko będzie kontynuowane świetnie, gratulujemy nagrody w Portalprogramas!
Używałem sed, awk, cut, sort, uniq, w skrócie kremu, ale nigdy nie zwracałem uwagi na pastę, dzięki za pokazanie, co potrafi. Slds.
cat plik.txt | xargs
zysk.
Zawsze używam programu Excel do tego [transpozycji] ... bardzo przydatne
Inny wariant:
cat distros.txt | tr «\ n» »«
HaHaHa w każdym komentarzu, inny sposób robienia tego samego!
I odwrotnie, jak by to było? Oznacza to zamianę wiersza słów oddzielonych spacjami na kolumnę.
Również łatwo, tym razem z awk.
Zakładając, że pola są oddzielone tabulatorami lub spacjami, co jest najbardziej powszechne (jeśli jest to przecinkami lub czymś innym, należy to wziąć pod uwagę i wskazać) i że plik zawiera teraz: archlinux debian ubuntu kaos fedora slackware gentoo
Ponieważ awk bezpośrednio podaje nam żądane pole, musimy iteracyjnie pokazywać nam jedno po drugim, aż do końca. Istnieje 7 pól, ponieważ jest to wartość NF (liczba pól). Ustawiamy licznik i = 1 tak, aby pokazywał nam pierwsze pole ($ 1) i musimy sprawić, by zwiększył się o jedną jednostkę (używając i ++) bez przekraczania ostatniego pola (NF).
awk '{for (i = 1; i <= NF; i ++) {print $ i}}' distros.txt
Najbardziej praktyczny sposób, łatwy do zapamiętania i działający na oba zmysły, to:
cat distros.txt | tr '\ n' '' ← Wyjście poziome standardowe wyjście (już omówione powyżej)
cat distros.txt | tr '' '\ n' ← Wyjście na standardowe wyjście pionowe
Pozdrowienia!
Zdecydowanie rozwiązanie Etemenanki, w obie strony, jest w porządku, jeśli interesuje Cię tylko prosta transformacja z wiersza na kolumnę i odwrotnie.
Dziękuję wszystkim za odpowiedź. W następnym scenariuszu zastosuję je w praktyce.
Pozdrowienia.
A jeśli tylko:
echo $ (cat distros.txt)
Jeszcze łatwiej:
awk '{printf $ 0 ″ «}' distros.txt