Plik txt - usunięcie fragmentu tekstu w każdej linii


(Sobladen) #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) #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


(Anddezr+Dobreprogramy Pl) #3

$text = zawartość pliku

preg_replace('/[.*/', '', $text)


(Sobladen) #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) #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.


(Sobladen) #6

a jak to zrobic? jak linii jest kilkanaście tysięcy?


(Marcin 110) #7

Spróbuj tego:

$wynik = preg_replace('/^(\S+).*$/m', '$1', $dany_tekst);

(Sobladen) #8

To działa:

<?php

$words=file('an-pl.txt');

$i=0;

while($words[$i])

{

$a=explode(' [',$words[$i]);

echo $a[0].'
';

$i++;

}

?>

Pozdr