Oprettet ons. d. 20. august 2003 kl. 00:15:05

skeleton
skeleton (20.985 point. Point ude: 180)

"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.

Skrevet ons. d. 20. august 2003 kl. 00:18:53| #1

roenving
roenving (328.349 point)
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 ?-)

Skrevet ons. d. 20. august 2003 kl. 00:22:51| #2

der er mange editorer der kan - specielt hvis de understøtter regulære udtryk. Du
skulle vel ikke anvende EditPlus fx - eller vi

Skrevet ons. d. 20. august 2003 kl. 00:27:43| #3

bertelbrander
bertelbrander (17.270 point)
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

Skrevet ons. d. 20. august 2003 kl. 00:29:59| #4

Det vil dog nok ikke virke med Hans Peter Hansen - men det kan være det ikke står der.

Skrevet ons. d. 20. august 2003 kl. 00:37:34| #5

bertelbrander
bertelbrander (17.270 point)
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.

Skrevet ons. d. 20. august 2003 kl. 00:48:47| #6

bertelbrander
bertelbrander (17.270 point)
Det dur dog ikke hvis der er nogen der hedder Hans-Peter.

Skrevet ons. d. 20. august 2003 kl. 00:58:01| #7

skeleton
skeleton (20.985 point)
--> 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.

Skrevet ons. d. 20. august 2003 kl. 01:02:11| #8

bertelbrander
bertelbrander (17.270 point)
Det forstår jeg ikke, hvilken Windows bruger du?

Skrevet ons. d. 20. august 2003 kl. 01:14:46| #9

bertelbrander
bertelbrander (17.270 point)
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.

Skrevet ons. d. 20. august 2003 kl. 01:15:42| #10

skeleton
skeleton (20.985 point)
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.

Skrevet ons. d. 20. august 2003 kl. 01:21:50| #11

bertelbrander
bertelbrander (17.270 point)
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

Skrevet ons. d. 20. august 2003 kl. 01:24:10| #12

bertelbrander
bertelbrander (17.270 point)
Du kan også erstatte for linien med:

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

Hvis nogen af linierne indeholder ;

Skrevet ons. d. 20. august 2003 kl. 01:36:29| #13

skeleton
skeleton (20.985 point)
Det virker med scriptet
Der kommer bare fejl i linien hvor der forekommer & tegn

Skrevet ons. d. 20. august 2003 kl. 01:54:12| #14

bertelbrander
bertelbrander (17.270 point)
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

Skrevet ons. d. 20. august 2003 kl. 01:57:54| #15

bertelbrander
bertelbrander (17.270 point)
Ups, jeg er vist for træt, der en " for meget med i starten af linien.

Skrevet ons. d. 20. august 2003 kl. 02:01:49| #16

bertelbrander
bertelbrander (17.270 point)
Jeg kan ikke lige nu finde en metode der virker med &

Skrevet tor. d. 21. august 2003 kl. 20:28:41| #17

bertelbrander
bertelbrander (17.270 point)
Jeg kan stadig ikke finde en metode der kan virke med &
Måske skulle jeg lave et 7 liniers C-program til dig?

Skrevet tor. d. 21. august 2003 kl. 20:53:20| #18

skeleton
skeleton (20.985 point)
Det siger jeg da ikke nej tak til.

Skrevet tor. d. 21. august 2003 kl. 23:55:22| #19

bertelbrander
bertelbrander (17.270 point)
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/ (...)

Skrevet lør. d. 23. august 2003 kl. 10:46:23| #20

skeleton
skeleton (20.985 point)
Jeg siger mange tak for hjælpen.

Skrevet lør. d. 23. august 2003 kl. 20:40:04| #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 ;)

Skrevet lør. d. 23. august 2003 kl. 20:48:59| #22

bertelbrander
bertelbrander (17.270 point)
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.

Skrevet lør. d. 23. august 2003 kl. 21:00:47| #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.

Skrevet søn. d. 24. august 2003 kl. 00:26:10| #24

bertelbrander
bertelbrander (17.270 point)
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 ;-)

Skrevet fre. d. 01. april 2005 kl. 10:04:33| #25

skeleton
skeleton (20.985 point)
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.

Skrevet fre. d. 01. april 2005 kl. 20:54:31| #26

bertelbrander
bertelbrander (17.270 point)
Ja, det kan man godt. Men hvis man fjerner alt er der ikke noget tilbage.
Er der noget jeg har misforstået?

Skrevet tir. d. 05. april 2005 kl. 20:04:36| #27

skeleton
skeleton (20.985 point)
omformulering

bevare de første 20 karaktere og fjerne resten af linien.

Skrevet tir. d. 05. april 2005 kl. 23:01:01| #28

bertelbrander
bertelbrander (17.270 point)
Jeg lavede en ny version:
http://home20.inet.tele.dk/ (...)

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.

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

html validering ?????

Oprettet den 14. maj 2012 kl. 17.10
bigtime giver 30 point for svar | Giv et svar »

Powershell script til tjekke foldere.

Oprettet den 14. maj 2012 kl. 15.35
Dangerjoe giver 200 point for svar | Giv et svar »

AS3 - returner en liste med alle variabler i et object...

Oprettet den 5. maj 2012 kl. 15.08
linnegaard giver 30 point for svar | Giv et svar »



   




Tips & Tricks fra PC World

Teaser billede

Læserne: Her er vores værste it-indkøb

Det er ikke al it-udstyr, som er det rene guld. Her er nogle af læsernes skrækhistorier.


Anmeldelser fra PC World

Teaser billede

Test: Mobil med Ferrari-design - og en Trabant-motor

Motorola har begået endnu en smartphone med lækkert design og potentiale til at være blandt de bedste. Men den når ikke i mål. Se her hvorfor.


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Sådan siger du farvel til Facebook

Læs her, hvordan du dropper Facebook og i stedet anvender nogle brugervenlige alternativer, så du stadig kan være social på nettet.


Nyheder fra Computerworld

Teaser billede

Galleri: De fedeste håndholdte gennem 40 år

Her har du de mest banebrydende håndholdte computere gennem alle tider.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger