Avatar billede skeleton Nybegynder
20. august 2003 - 00:15 Der er 27 kommentarer og
1 løsning

"rensning" at tekst fil

Hej

Jeg skal lave en rensning af en tekst fil.
eg. Peter hansen - 102563548963211563 -52 
Her vil jeg gerne have fjernet " - 52  "
6 karaktere der er i liniens slutning.
der er cirka 500 poster i hver tekst fil, derfor ville det være rart at have et script der kan "rense" dette væk.
Avatar billede roenving Novice
20. august 2003 - 00:18 #1
Skal du have det gjort med en tekst-fil eller ...

-- og er du kun inde i f.eks. windows, når du skal have det udført ?-)
Avatar billede erikjacobsen Ekspert
20. august 2003 - 00:22 #2
der er mange editorer der kan - specielt hvis de understøtter regulære udtryk. Du
skulle vel ikke anvende EditPlus fx - eller vi
Avatar billede bertelbrander Novice
20. august 2003 - 00:27 #3
Hvis du er så heldig at bruge Windows NT/2k/XP kan du bruge:

for /F "tokens=1,2,3,4" %A in (tt.tt) do @echo %A %B %C %D >>tt.out

hvor tt.tt er indput & tt.out er output

Hvis du putter det i en bat-fil skal du erstatte %A med %%A osv
Avatar billede erikjacobsen Ekspert
20. august 2003 - 00:29 #4
Det vil dog nok ikke virke med Hans Peter Hansen - men det kan være det ikke står der.
Avatar billede bertelbrander Novice
20. august 2003 - 00:37 #5
Man kan bruge:
for /F "tokens=1,2 delims=-" %A in (tt.tt) do @echo %A - %B >>tt.out
Hvis der er nogen der har mere end et fornavn.
Avatar billede bertelbrander Novice
20. august 2003 - 00:48 #6
Det dur dog ikke hvis der er nogen der hedder Hans-Peter.
Avatar billede skeleton Nybegynder
20. august 2003 - 00:58 #7
--> bertelbrander
har prøvet det med at putte det ind i en bat fil, men for ('/F' is not recognized as an internal or external command.)

-->erikjacobsen
Den første del af hver linie kan indeholde et navn, efternavn, firma
anden del indeholder en tal kode.
Det er blot de sidste 6 karaktere i hver linie der skal skæres væk.
Avatar billede bertelbrander Novice
20. august 2003 - 01:02 #8
Det forstår jeg ikke, hvilken Windows bruger du?
Avatar billede bertelbrander Novice
20. august 2003 - 01:14 #9
Jeg kan godt lave et script der fjerner de sidste 6 karakterer fra hver linie, men det kræver at for /F virker.
Der findes en lang række text-editorer (f.ex min egen) der kan lave en makro til at fjerne de sidste 6 karakterer fra hver linie.
Avatar billede skeleton Nybegynder
20. august 2003 - 01:15 #10
Just a little typeO.

koden virker nu men den skærer bare for meget væk.
Så vidt jeg forstår tager den de 4 første "ord" og gemmer dem, men nogle har kun fornavn & efternavn hvor der andre steder er firmanavn.
2. del indeholder nogle gange også flere tal koder.
Der for kan jeg ikke vide hvor mange "ord" der indgår i 1. & 2. del af hver streng.

Fælles er bare at de sidste 6 karaktere skal skæres væk.
Avatar billede bertelbrander Novice
20. august 2003 - 01:21 #11
Prøv dette script:

@echo off
if [%1]==[] echo You must specify a input file& goto :eof
setlocal
for /F "delims=;" %%I in (%1) do call :do_it "%%I"
endlocal
goto :eof

:do_it
set xxx=%~1
set yyy=%xxx:~0,-6%
echo %yyy%
goto :eof

Du kalder det med: whatever.bat infile >outfile
Avatar billede bertelbrander Novice
20. august 2003 - 01:24 #12
Du kan også erstatte for linien med:

for /F "tokens=*" %%I in (%1) do call :do_it "%%I"

Hvis nogen af linierne indeholder ;
Avatar billede skeleton Nybegynder
20. august 2003 - 01:36 #13
Det virker med scriptet
Der kommer bare fejl i linien hvor der forekommer & tegn
Avatar billede bertelbrander Novice
20. august 2003 - 01:54 #14
Vi prøver igen:

@echo off
if [%1]==[] echo You must specify a input file& goto :eof
setlocal
for /F "tokens=*" %%I in (%1) do set uuu="%%I"& call :do_it
endlocal
goto :eof

:do_it
echo %uuu:~0,-6%
goto :eof
Avatar billede bertelbrander Novice
20. august 2003 - 01:57 #15
Ups, jeg er vist for træt, der en " for meget med i starten af linien.
Avatar billede bertelbrander Novice
20. august 2003 - 02:01 #16
Jeg kan ikke lige nu finde en metode der virker med &
Avatar billede bertelbrander Novice
21. august 2003 - 20:28 #17
Jeg kan stadig ikke finde en metode der kan virke med &
Måske skulle jeg lave et 7 liniers C-program til dig?
Avatar billede skeleton Nybegynder
21. august 2003 - 20:53 #18
Det siger jeg da ikke nej tak til.
Avatar billede bertelbrander Novice
21. august 2003 - 23:55 #19
Jeg har nu lavet et program, kaldet striblast6.exe Det bruges sådan:
striblast6 <file.in > file.out

Bemærk at linier på mindre end 6 karakterer vil blive ignoreret.

http://home20.inet.tele.dk/midgaard/striblast6.zip
Avatar billede skeleton Nybegynder
23. august 2003 - 10:46 #20
Jeg siger mange tak for hjælpen.
Avatar billede erikjacobsen Ekspert
23. august 2003 - 20:40 #21
Prøv at få fat i en ordentlig editor. Få tastetryk, og så er det ordnet. Jeg synes
det er noget bedre end at bruge 2 dage om det ;)
Avatar billede bertelbrander Novice
23. august 2003 - 20:48 #22
Selv om man har en editor der kan gøre det med nogle få taste tryk, kan man hurtigt spare de 5 minutter det tager at skrive programmet.
Avatar billede erikjacobsen Ekspert
23. august 2003 - 21:00 #23
Jeps, og hvis man er så heldig eller kløgtig at installere Perl, kan man
også få det lille program korrekt i første forsøg *g* - sorry, jeg er i
drillehumør her til aften.
Avatar billede bertelbrander Novice
24. august 2003 - 00:26 #24
Hvis ikke spørgsmålet var stillet i en script kategori, havde jeg startet med at lave programmet i C og sparet os alle for anelse tid.
Jeg vil mene at det er hurtigere at lave programmet i C end at lære perl ;-)
Avatar billede skeleton Nybegynder
01. april 2005 - 10:04 #25
hov dette spg. er vidst aldrig blevet lukket.

kan man nemt lave programmet om til at fjerne alt istedet for de første 20 karaterer af en linie.
Avatar billede bertelbrander Novice
01. april 2005 - 20:54 #26
Ja, det kan man godt. Men hvis man fjerner alt er der ikke noget tilbage.
Er der noget jeg har misforstået?
Avatar billede skeleton Nybegynder
05. april 2005 - 20:04 #27
omformulering

bevare de første 20 karaktere og fjerne resten af linien.
Avatar billede bertelbrander Novice
05. april 2005 - 23:01 #28
Jeg lavede en ny version:
http://home20.inet.tele.dk/midgaard/truncfile.zip

Det kan begge dele. Du bruger det med:
truncfile offset source dest

Hvis offset er større en 0 vil den bevare de første offset karakterer og fjerne resten, hvis offset er mindre end 0 vil den fjerne de sidste offset karakterer.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester