Portál AbcLinuxu, 9. května 2025 21:19

Dotaz: Bash - usporiadanie slov v subore...

24.6.2010 15:49 Lichan
Bash - usporiadanie slov v subore...
Přečteno: 337×
Odpovědět | Admin
Mam 4GB textovy subor v ktorom mam rozne dlhe slova (kazde prave v jednom riadku) s roznym usporiadanim slov a potreboval by 2 veci naprogramovat v bashi:
1. krok usporiadat slova v subore podla dlzky jednotlivych slov
2. krok usporiadat slova v subore abecedne 
Viete mi niekto s tym poradit?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

24.6.2010 15:57 Lichan
Rozbalit Rozbalit vše Re: Bash - usporiadanie slov v subore...
Odpovědět | | Sbalit | Link | Blokovat | Admin
To jest chcem mat 2 subory kazdy po 4GB jeden abecedne usporiadany a druhy podla dlzky slov...
24.6.2010 16:08 marek
Rozbalit Rozbalit vše Re: Bash - usporiadanie slov v subore...
Dobry den.

Druhy soubor je jednoduchy: man sort

Prvni sort je horsi, muzete napriklad pomoci awk ke kazdemu radku pripsat pocet pismen, pomoci sort setridit a potom zase cislo odseknout.

Ale 4 GB nejsou uplne malo

Marek
24.6.2010 16:14 Lichan
Rozbalit Rozbalit vše Re: Bash - usporiadanie slov v subore...
Mam to na masine kde nemam moznost resp. pravo spustat compiler - spravil by som to potom v C alebo v Pascale ale ako to naspat uploadnem - (mozno nieje ani nainstalovany - je to freebsd server - 2 x 3GHz Xeon, 16GB RAM) musim to zvladnut v bashi... :(
24.6.2010 16:17 marek
Rozbalit Rozbalit vše Re: Bash - usporiadanie slov v subore...

Priklad:

 echo 'a
bbb
cc
dddd
eeeee'| awk '// {print length()"\t"$0}'| sort -n| cut -f2
a
cc
bbb
dddd
eeeee
Marek
Heron avatar 24.6.2010 16:08 Heron | skóre: 53 | blog: root_at_heron | Olomouc
Rozbalit Rozbalit vše Re: Bash - usporiadanie slov v subore...
Odpovědět | | Sbalit | Link | Blokovat | Admin
V bashi nevím, ale DB by tohle zvládla levou zadní.
Heron
24.6.2010 16:15 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: Bash - usporiadanie slov v subore...
Odpovědět | | Sbalit | Link | Blokovat | Admin
1. krok usporiadat slova v subore podla dlzky jednotlivych slov
Erm ...

tr '[a-zA-Z]' x < subor | paste - subor | sort | cut -f 2

?
24.6.2010 16:28 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: Bash - usporiadanie slov v subore...
To je pekne.

Mozno by bol lepsi tr -c '\n' x < subor | ... pre pripad, ze sa sem tam vyskytne aj iny znak
If you hold a Unix shell up to your ear, you can you hear the C.
24.6.2010 16:30 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: Bash - usporiadanie slov v subore...
Na druhej strane musi triedit 8GB subor, pri zapisani dlzky v desiatkovej sustave a nie jednickovej, mu ten subor narastie nezanedbatelne menej.
If you hold a Unix shell up to your ear, you can you hear the C.
24.6.2010 17:18 Ant
Rozbalit Rozbalit vše Setridit? Zdvojnasobit!
paste - subor
Je opravdu nejjednodussi zpusob, tak setridit 4GB soubor vytvorit 8 gigabajtovy?
24.6.2010 17:19 Ant
Rozbalit Rozbalit vše Re: Setridit? Zdvojnasobit!
tak setridit
s/tak/jak/

Jinak koukam, ze si musim davat casteji refresh. Nekdo me predbehl s tou samou myslenkou.
25.6.2010 09:09 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Setridit? Zdvojnasobit!
Není, jsou i jiné způsoby, třeba to výše uvedené číslování, nebo z těch jednodušších mne napadá číst řádku po řádce a v nově vytvářeném souboru ji dávat přímo na řádek odpovídající její délce (takový insert sort; pokud už tam něco je tak oddělit vhodným oddělovačem, lze-li). Na závěr jen nahradit oddělovače a odstranit prázdné řádky. V zásadě si můžete implementovat jakýkoliv algoritmus, ne? :)
25.6.2010 09:10 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Setridit? Zdvojnasobit!
Na druhou stranu, hodně záleží co si představujete pod slovem jednoduchost. To s tím 8G souborem mi připadá jednoduché dost ;)
25.6.2010 11:16 jas | skóre: 13 | blog: blag
Rozbalit Rozbalit vše Re: Bash - usporiadanie slov v subore...
Odpovědět | | Sbalit | Link | Blokovat | Admin
A nie je tam ziadny interpret perlu/pythonu/haskellu? Obavam sa, ze obvzlast ten prvy krok by v bashi trval prilis dlho.
25.6.2010 11:46 Lichan
Rozbalit Rozbalit vše Re: Bash - usporiadanie slov v subore...
Perl ano, haskel a python nie.... Ako by to slo v Perle?
26.6.2010 00:41 jas | skóre: 13 | blog: blag
Rozbalit Rozbalit vše Re: Bash - usporiadanie slov v subore...
Napr. takto, cita zo suboru inp.file, pise na std. vystup:
my $data_file="inp.file";
open(DAT, $data_file) || die("Could not open file!");
my @raw_data=<DAT>;
close(DAT);
my @desc = sort {length $a <=> length $b} @raw_data;
print $_ "\n" foreach @raw_data;
print @desc;
Pokial ide o druhy priklad, staci pouzit sort bez specifikovania funkcie(cize bez toho {length $a <=> length $b}).

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.