Beniooo
21.07.2012, 16:54:50
Witam, jak posortować dane z pliku txt aby były posortowane rosnąco co do ich długości, każde słowo jest w innym wierszu
Dodam że plik ma ~36MB i 2777114 wierszy
lobopol
21.07.2012, 17:06:09
Akcja ma być wywołana jeden raz albo rzadko przez automat? Jeżeli tak to najprostsza metoda to przelecenie freadem po całym pliku i dodać je do plików zawierających konkretną długość plików. Jak to zrobimy połączyć pliki zaczynając od plików zawierających najkrótsze wyrazy. Po całej operacji usunąć pliki zawierające poszczególne długości.
wNogachSpisz
21.07.2012, 17:21:25
Mysle ze warto wrzucić kazdy wiersz do bazy danych
CTRL
21.07.2012, 23:41:04
Popieram powyższego kolegę, możesz wtedy dodać sobie dodatkową komórkę czy już wykorzystałeś wyraz.
toaspzoo
22.07.2012, 00:13:50
Nie ma takiej potrzeby
Otwierasz plik, dzielisz
explodem na części, następnie sprawdzasz długości wyrazów i wrzucasz je do innej zmiennej tablicowej - sortujesz i wypisujesz.
Zaraz napiszę coś niecoś

Napisałem, mimo, że to nie dział gotowców. proszę
http://znajomek.unixstorm.org/sorter.phpMam nadzieję, że wszystko jest jasne
sobol6803
22.07.2012, 00:22:02
Cytat
Czwarty wyraz
Siódmy wyraz
Coś nie tak.

Polskie znaki FTW!
toaspzoo
22.07.2012, 00:23:25
?
Oba wyrazy mają taką samą długość, więc nie wiem o co chodzi
sobol6803
22.07.2012, 00:27:37
Cytat(toaspzoo @ 22.07.2012, 01:23:25 )

?
Oba wyrazy mają taką samą długość, więc nie wiem o co chodzi

"wyraz" i "wyraz" może tak, ale "czwarty" i "siódmy" raczej nie.
toaspzoo
22.07.2012, 00:29:09
Poprawione, polskie znaki
sobol6803
22.07.2012, 00:31:36
Cytat
Najdłuższy wyraz jaki kiedykolwiek zapisano na klawiaturze komputera.
to 69 znaków (ze spacjami i kropką), a nie 71. Widać polskie znaki mają długość 2.
toaspzoo
22.07.2012, 00:41:36
Tak

Okej, teraz działa - plik
ANSI
sobol6803
22.07.2012, 00:49:00
Cytat(toaspzoo @ 22.07.2012, 01:41:36 )

Tak

Okej, teraz działa - plik
ANSIPozostał tylko tag meta do ustawienia i będzie git.
toaspzoo
22.07.2012, 01:21:07
Dobra, dopisze już go sobie user
lobopol
22.07.2012, 08:14:14
toaspzoo genialne rozwiązanie tylko bardzo niewydajne wymagające sporo większej mocy niż podane przeze mnie. Nie ma to jak zrobić tablice z 2777114 wierszy i na niej puścić sortowanie i dodatkowo
for($i=0;$i<count($file_lines);$i++)
Nie wiem czy można to zrobić w gorszy sposób
redeemer
22.07.2012, 09:04:13
Kod
cat input.txt | awk '{print length,$0}' | sort -n | cut -d " " -f 2 > output.txt
wNogachSpisz
22.07.2012, 12:09:46
Pragnę zauważyć, że w MySQL od 17 lat zespól wspaniałych fachowców pracuje nad tworzeniem i optymalizowaniem między innymi funkcji sortujących. Wy chcecie to przebić w 15 minut przy pomocy explode..
Łatwo zgadniąć co się lepiej sprawdzi.
toaspzoo
22.07.2012, 12:13:13
Tylko, załóżmy, że użytkownik będzie edytował plik bezpośrednio na maszynie, nie przez skrypt...
Ponowne wgrywanie do bazy mija się z celem
wNogachSpisz
22.07.2012, 12:20:27
Co rozumiesz przez "mija się z celem"?
Myśle że to w ogóle dziwna sprawa aby przetwarzać plik tekstowy o rozmiarze 36MB wiersz po wierszu łącznie blisko 3 miliony. Chciałbym wiedzieć czemu to ma służyć w szerszej perspektywie.
Strzelam że tym plikiem jest słownik skrabli
Beniooo
22.07.2012, 14:15:42
Taa, plik ze słowami, bedzie mi służył do programu na stronie
wNogachSpisz
22.07.2012, 14:17:11
Dlaczego zatem nie umieścić go do bazie danych?
toaspzoo
22.07.2012, 18:38:18
Można umieścić, pod warunkiem, że jeśli plik będzie ulegał edycji i będzie automatycznie wrzucany do sql za każdym razem.
W innym wypadku, gdy plik nie będzie w ogóle modyfikowany, można wrzucić gotowy, posortowany
lobopol
22.07.2012, 19:22:29
toaspzoo nie zaciemniaj mu. Skoro ma to być używane w jakimś skrypcie to zdecydowanie baza. Przecież nie będzie przy każdej akcji przeszukiwał albo nim manipulował. Wgrać do bazy i kolejne wyrazy pchać już bezpośrednio do bazy. Wiadomo przecież, że na stronie nie będzie wyświetlał ani nie będzie operował na wszystkich 3 milionach wyrazów.
toaspzoo
23.07.2012, 23:44:10
Tego nie wiemy, może chce posortować plik i zwrócić go w formie pliku...
lobopol
24.07.2012, 15:28:02
toaspzoo:
Cytat
Taa, plik ze słowami, bedzie mi służył do programu na stronie
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.