Norbit_24
(Sobladen)
3 Listopad 2009 06:44
#1
Witam
mam plik txt w takim formacie:
aardvark [rzeczownik] = mrównik
abaca [rzeczownik] = manila
aback [przysłówek] = wstecz
abacus [rzeczownik] = abakus
abacus [rzeczownik] = liczydło
abandon [czasownik] = opuścić
I takich linii jest kilka tysięcy.
Jak zrobić za pomocą np. php żeby pierwsze słowa do " [" zostały a wszystko po " [" wlacznie się usuneło i tak w kazdym wierszu. A póxniej zapisało się do pliku txt ?
Proszę o pomoc
lucas80
(lucas80)
3 Listopad 2009 07:35
#2
Możesz zrobić to przy pomocy wyrażenia regularnego poleceniem grep dla windows. Ściągnij np. stąd http://gnuwin32.sourceforge.net/downlinks/grep.php
Przejdź w wierszu poleceń do katalogu gdzie zainstalowałeś grep’a i wpisz polecenie:
grep -E “^[a-z]+[*” plik_wejsciowy.txt -o > plik_wyjsciowy.txt
na koniec musisz jeszcze plik_wyjsciowy.txt otworzyć np. w wordzie, który zamieni automatycznie znaki końca linii
$text = zawartość pliku
preg_replace(’/[.*/’, ‘’, $text)
Norbit_24
(Sobladen)
3 Listopad 2009 14:48
#4
Dzięki wszytskim…
W tym przykładzie to nie działa, gdyż w tym pliku są takie znaki jak: [ i ’
i wywala błedy;/ musiało by być coś co pominie te znaki…
Myślalem o php na plikach.
sposób lucas80 jeszcze nie sprawdzałem, ale zaraz to zrobie.
Edit://
Kurdę, nie moge wejść do katalogu w tym wierszu poleceń.
Program zainstalowałem na partycji: G:\PROGRAMY\GnuWin32
A jestem w C jak włącze program. Także prosze o pomoc, nejlepsze dla mnie rozwiazanie byłoby z php.
Z góry dzięki
Edit2:
Wiem tylko tyle że trzeba uzyc do tego takich funkcji: explode , strpos , substr
Jednak nie mogę tego zrobic…
Edit:3
zrobiłem cos takiego:
Jednak działa to tylko w pierwszej linii, a w 2 już nie. Jak zrobić aby działało też w następnych liniach?
lucas80
(lucas80)
3 Listopad 2009 18:38
#5
Nie działa Ci, bo on tego nie widzi jako dwie linie tylko jako jedną. W ten sposób musisz do zmiennej $ang wczytywać każdą linię oddzielnie.
Norbit_24
(Sobladen)
3 Listopad 2009 18:58
#6
a jak to zrobic? jak linii jest kilkanaście tysięcy?
Spróbuj tego:
$wynik = preg_replace('/^(\S+).*$/m', '$1', $dany_tekst);
Norbit_24
(Sobladen)
4 Listopad 2009 06:39
#8
To działa:
<?php
$words=file('an-pl.txt');
$i=0;
while($words[$i])
{
$a=explode(' [',$words[$i]);
echo $a[0].'
';
$i++;
}
?>
Pozdr