TwojePC.pl © 2001 - 2024
|
|
A R C H I W A L N A W I A D O M O Ś Ć |
|
|
|
jak z pliku tekstowego pozbyc sie niektorych informacji ? , Daniel 18/10/06 14:43 Czy jest jakis tool, ktory umozliwia z pliku tekstowego wyfiltrowanie niektorych jego informacji ? Chodzi o to, aby wykasowac wiersze z jakims ciagiem znakow, pozostawioajac wiersze, ktore tego ciagu nie zawieraja.- poszukaj czegos o awk , Deus ex machine 18/10/06 14:50
nie jest takie trudne .)"Uti non Abuti" - a co ? , Daniel 18/10/06 14:57
A co to jest AWK ? :)
Najlepiej by mi pasowalo jakies narzedzie, albo szybki skrypt.
Makro w Wordzie to bedzie dzialac "latami" :)
Pliki sa dosc duze (kilka do kilkadziesiat mega tekstu).
- mozna zrobić makro w wordzie , rkowalcz 18/10/06 14:54
np. ma skasowac wiersze z wyrazem kota.
Edycja -> znajdź, wpisujemy kota, Znajdź następne, Anuluj
Home (na klawiaurze)
Shift+End
Del
i tak wkoło
makro wygląda u mnie tak:
Sub Makro1()
'
' Makro1 Makro
' Makro zapisane 2006-10-18 przez rk
'
Selection.Find.ClearFormatting
With Selection.Find
.Text = "kota"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute
Selection.HomeKey Unit:=wdLine
Selection.EndKey Unit:=wdLine, Extend:=wdExtend
Selection.Delete Unit:=wdCharacter, Count:=1
End Sub - a to moze tu , Deus ex machine 18/10/06 15:35
http://ptm.linux.pl/...fo_pl_HTML/gawk/gawk_3.html"Uti non Abuti" - Klasyczne zadanie dla GREP-a ! AWK to syf ! , pachura 18/10/06 15:56
grep --invert-match --ignore-case dupa <C:\pliczek.txt >C:\pliczek_bez_dup.txt
Grep jest na 99% linuxów/unixów, oczywiście jest też pełno implementacji na Windowsy - np. ja mam z MingGW.
AWK nie cierpię - wolę już napisać sobie przejrzysty, króciutki skrypcik w PHP.- zdecydowanie grep , bwana 18/10/06 17:14
Oczywiście można sobie skrobnąć skrypt w perlu, jak kto lubi, ale po co wyważać otwarte (grepem) drzwi?:-D
Oczywiście grep nie pomoże, jeśli chcemy wywalić z pliku fragmenty danej linii czy linie, które są poprzedzone/poprzedzają linie zawierającą/nie zawierające czegoś tam. Do tego nadają się awk, sed lub faktycznie napisany samodzielnie skrypt, jeżeli szybciej nam napisać skrypt niż uczyć się awk lub sed-a.
Jeżeli dużo pracuje się z przetwarzaniem tekstów, warto zainwestować trochę czasu w naukę używania takich narzędzi (grep, sed, awk) oraz wyrażeń regularnych, którymi te narzędzia pozwalają się posługiwać. Albo, jeśli ktoś ma fantazję, nauczyć się podstaw perla (i wyrażeń regularnych) i pisać sobie skrypty na różne okazje."you don't need your smile when I cut
your throat" - grep , Daniel 18/10/06 17:53
Idwalnym by bylo, gdyby sie dalo pousuwac linie ktore zawieraja "1 ciag znakow" and "drugi ciag znakow". A miedzy tymi dwoma ciagami (po lub przed) bylo by cokolwiek. To by bylo super !
Tylko ze uzywam XPka, a nie Linuxa i grepa nie posiadam.
Moze mozecie polecic jakiegos "grepa" dla Windowsa ?
Najlepiej freeware, bo podejrzewam, ze shareware to bedzie mialo ograniczenie na wielkosci przetwarzanych plikow.- Jak podasz dokładnie czego ma szukać , JOTEM 18/10/06 20:04
i w jakich plikach, oraz jakie są kryteria kasowania (zrozumiałem, że całych linii) to z nudów Ci od ręki coś napiszę.Poryjemy..zrobaczymy - oczywiście że się da , bwana 20/10/06 12:30
tu właśnie mają zastosowanie wyrażenia regularne. maska wyszukiwania mogłaby wyglądać tak:
ciag_1.*ciag_2"you don't need your smile when I cut
your throat"
- chodzi o to... , Daniel 18/10/06 21:51
Jesli skrypt znajdzie pierwszy ciag znakow, to sprawdza czy wystepuje 2 ciag znakow. I jesli wystepuja oba - to kasuje cala linie.
np.
Jesli wystepuje "ala ma kota" to szuka w linii "kot ma ale".
Jesli wystapi "kot ma ale" to zostaje usunieta cala linia :)
A jesli nie ma "ala ma kota" - to nic nie usuwa, tylko sprawdza kolejne linie.
Mysle ze najlepiej paramerty co ma sie wyszukiwac - podac albo w wywolaniu programu, a jeszce lepiej w jakims pliczku tekstowym ini. No ale ja programista nie jestem, to nie wiem jak lepiej. Wazne aby program (skrypt) byl szybki, bo ma za zadanie przetwarzac dlugie pliki (nawet i powyzej 100 MB). Wiec musi sie tez na tak duzych plikach "nie wywalac".- a takich par , JOTEM 18/10/06 21:59
jeden ciąg-drugi ciąg jest dla jednego pliku więcej niż jedna?Poryjemy..zrobaczymy - par jest duzo , Daniel 18/10/06 22:28
Dobrze jakby mozna bylo podac kilka takich par (nie musi byc duzo - kilka wystarczy). Np :
"ciag 1" and "ciag 2"
"ciag 1" and "ciag 3"
Przycz czym "ciag 1" moze byc zawsze taki sam.
A takich wystapien w pliku tez bedzie wiele.- par kilka (a nie duzo) , Daniel 18/10/06 22:30
Pomylilem sie w tytule :)
Par moze byc kilka (ale nie duzo !).
Max 4 pary to juz bylo by super.
Ale nawet 2 pary bedzie OK. - Poczekaj 30 min , JOTEM 18/10/06 22:31
...Poryjemy..zrobaczymy
- a, jeszcze jedno , JOTEM 18/10/06 22:34
czy wyszukiwane ciagi będą zawierać znak "="?Poryjemy..zrobaczymy - = nie , Daniel 18/10/06 22:37
Ale beda kropki "."- Dobra, programik już mam , JOTEM 18/10/06 22:44
ale przydałoby się kilkaset linii do przetestowania.
Podrzuć na maila fragment jakiegoś pliku.
I jakąś parę, jakiej szukasz, albo ze dwie.Poryjemy..zrobaczymy - ale tempo :) , Daniel 18/10/06 22:51
Teraz nie mam przykladowego "prawdziwego" pliku.
Jutro rano moge potestowac na prawdziwym ciele :D
Zaloz probny plik z danymi, np :
xxx 2312312 "ciag 1" xxvvxc 32423423 "ciag 2" 23423423
owerywoiuwe 875793845739847 hgkjhgkjdshkjdfgh 98759
yyy 2312312 "ciag 1" 353453 32423423 "ciag 2" reterterte
owerywoiuwe 875793845739847 hgkjhgkjdshkjdfgh 98759
yyy 2312312 "ciag 1" 353453 32423423 "ciag 3" reterterte
I poprostu powiel to na "pałę" przez "ctrl+c" :)- acha , Daniel 18/10/06 22:53
Oczywiscie " " nie ma.
A i spacji po "ciagach" tez moze nie byc (ale moga byc) :)
Ale to chyba nie problemy ? - hmmm , JOTEM 18/10/06 23:11
a potem się okaże, że kodowanie tekstu inne itp.
Nie ważne.
Ściągnij sobie:
jotem.magma-net.pl/rozne/lineremover.zip
Sprawdź programem AV,
Linie do zamiany wczytuje na starcie z pliku DoZamiany.dat umieszczonego w tym samym katalogu co program.
Pliku DoZamiany.dat moze nie być, po prostu go nie wczyta.
Każda para ma postać:
ciag1=ciag2
nie ma spacji przed i po "=", para definiowana w jednej linii.
Par może być dowolnie dużo.
Pary dopisujesz ewentualnie w oknie tekstowym widocznym po
uruchomieniu.
Zamieniany tekst nie jest wyświetlany.
Wszystko jest wczytywane do pamieci, więc dobrze jest mieć jej dużo.
130MB plik przetwarza u mnie coś kolo 25s.Poryjemy..zrobaczymy - i jeszcze , JOTEM 18/10/06 23:13
założyłem, że ciag2 jest po ciągu1.
oba ciągi w parze mogą być dowolne, nie musi się powtarzać we wszystkich parach ciąg1.Poryjemy..zrobaczymy - no tak - , Daniel 18/10/06 23:15
- ciag 1 jest pierwszy, ciag 2 jest drugi :)
Aaaa, program robi operacje na pliku pierwotnym, czy przepisuje nieusuniete linie do nowego pliku ? Bo jesli na pierwotnym, to nie wiem czy przy wielkosci pikow po kilkaset mega - sie nie zawiesi.- Coś rosną te pliki , JOTEM 18/10/06 23:22
było kilka do kilkadziesiąt, teraz kilkaset.
Program operuje na pamięci, bo tak mi wygodnie, więc jak zamierzasz wczytywać pliki po 500MB, to 1 GB pamięci fizycznej musisz mieć.
Jakbyś powiedział od razu, że kilkaset MB, to bym go inaczej napisał.
Zapisuje do dowolnego pliku, może być inny, może być ten sam.Poryjemy..zrobaczymy - bo testuje , Daniel 18/10/06 23:33
na wiekszych plikach :)
wlasnie zapodalem mu taki 600 MB i sie chyba zamulilo :)
Ramu mam 1 GB.
W wiekszosci wypadkow wystarczy na maxa tak ze 100 MB-200MB, ale moze czasami beda pliki i wieksze. Po prostu nie przewidze teraz jakie to beda duze pliki.- Ściągnij nowszą wersję , JOTEM 18/10/06 23:41
bo w starej przy większych plikach wskażnik postępu stał w miejscu.
W nowej V1.0.1.2 to poprawiłem
Nie przesadzaj z rozmiarem. Przy 1GB pamięci ograniczyłbym się do 350MB. Samo wczytywanie pliku już trochę potrwa, tak samo zapis. Tylko wycinanie w pamięci linii ma wskaźnik postępu.Poryjemy..zrobaczymy - cos nie teges :) , Daniel 18/10/06 23:41
Chyba cos nie teges...
Bo przy pliku 140 MB juz sie wyklada (znaczy sie zamiera).
A niemozliwe aby zajal chociaz 512GB RAM (nawet jesli Winda zjada polowe ramu).- choroba , Daniel 18/10/06 23:43
ale na kompie na ktorym ja to bede uzywal jest tylko 512 ramu.
Teraz mam 1 GB, ale docelowy komp ma 512. I co teraz ?- a moze by tak , Daniel 18/10/06 23:46
przekierowac, aby nie kozystal z RAMu tylko od razu zapisywal na HDD ? Nawet jesli bedzie dzialal 2 razy wolniej to i tak jest wystarczajaco szybki. A problem z ramem sie rozwiaze.
Np. wczutuje plik "plik.txt" a zapisuje "plik.new"
Ale marudze, co ? :)- A to już na nowej wersji? , JOTEM 18/10/06 23:55
Zawsze zostaje zwiększyć plik wymiany.
Ja mam 768MB, puściłem plik 400MB i zrobił.Poryjemy..zrobaczymy - na nowej , Daniel 19/10/06 00:00
Na nowe - raz zrobil, a raz sie zawiesil.
I boje sie, ze jak bede mial 2 razy mniej ramu (z czego polowe zezre winda) to sie wogole zamuli.
Dalo rade by zrobic z zapisem od razu do plikow ?
Np. wczytuje sie plik zrodlowy plik.txt
Wciskamy "wykonaj", a on zapisuje 2 nowe pliki :
plik.new (z tym co zachowal !) i plik.old (z tym co usunal).
Mozna by dodac jeszcze licznik "ilosc linii usunietych", aby bylo wiadomo ze "usuniete" + "zachowane" = wszystkie linie.
- na nowej , Daniel 19/10/06 00:01
Na nowe - raz zrobil, a raz sie zawiesil.
I boje sie, ze jak bede mial 2 razy mniej ramu (z czego polowe zezre winda) to sie wogole zamuli.
Dalo rade by zrobic z zapisem od razu do plikow ?
Np. wczytuje sie plik zrodlowy plik.txt
Wciskamy "wykonaj", a on zapisuje 2 nowe pliki :
plik.new (z tym co zachowal !) i plik.old (z tym co usunal).
Mozna by dodac jeszcze licznik "ilosc linii usunietych", aby bylo wiadomo ze "usuniete" + "zachowane" = wszystkie linie.- ale tak , Daniel 19/10/06 00:18
ale tak wogole to programik wlasnie taki jakiego szukalem !
Czyli super spelnia swoja funkcje !
Naprawde wielkie dzieki za poswiecenie czasu.
Wirtualne <piwo> oczywiscie posylam :)
A i MultiRep tez sie moze do czegos przydac :)- Masz i się ciesz , JOTEM 19/10/06 00:37
W tej nowej wersji przerabia jak leci, czyli praktycznie bez ograniczeń. Na początku może chwilę stać, bo sprawdza ile plik ma linii, i czy jest odczytywalny.
Idę spać.Poryjemy..zrobaczymy - ciesze sie ! , Daniel 19/10/06 08:11
Naprawde bardzo sie ciesze, bo ta wersja robi dokladnie to co trzeba :) SUPER ! Poprzednia niestety przy 512MB sie wieszala.
Jeszcze raz wielkie dzieki ! :)
|
|
|
|
|
All rights reserved ® Copyright and Design 2001-2024, TwojePC.PL |
|
|
|
|