Avatar billede boomla Nybegynder
25. marts 2008 - 01:53 Der er 19 kommentarer

En .bat file til at slette hveranden linie i en tekst

Hej alle

Jeg er ved at lave en .dict file til min PPC tastatur :-)

Jeg fandt en kæmpe liste med over 15000 danske ord, men problemet er at de er oversat til eng. i samme tekst...

Feks :

figur
    figure, diagram, image, picture, representation
figurligt
    figurative, figuratively
fil
    file
filial
    affiliate, branch
film
    film, motion picture, movie

Osv. osv.

Det jeg gerne vil er at slette de eng. orde + fjerne mellemrummet hvor de eng. ord stod, så jeg ikke har en tom linje der hvor de oversatte eng ord eller flere stod...

Kan selvfølgelige går igen med at slette dem enkeltvis manuelt og blive færdig næste år :-)

Brugt før en meget simpelt "Rename.bat" til at ændre enelse på nogle filer ..

(rename *.0* *.r*)

Er her nogen som kan hjælpe mig med dette... 10000 tak på forhånd ...
Avatar billede arne_v Ekspert
25. marts 2008 - 02:11 #1
Du har spurgt i C/C++ kategorien - vil du have et C/C++ program til det ?
Avatar billede arne_v Ekspert
25. marts 2008 - 02:15 #2
C kode:

#include <stdio.h>

int main(int argc, char *argv[])
{
  char line[1025];
  FILE *fp1,*fp2;
  int incl;
  fp1 = fopen(argv[1], "r");
  fp2 = fopen(argv[2], "w");
  incl = 1;
  while(fgets(line,sizeof(line),fp1))
  {
      if(incl) fputs(line,fp2);
      incl = !incl;
  }
  fclose(fp1);
  fclose(fp2);
  return 0;
}
Avatar billede bertelbrander Novice
25. marts 2008 - 02:20 #3
Som en batfil:
@echo off
set first=1
for /F "tokens=*" %%I in ('type %1') do call :Process "%%I"
goto :eof

:Process
if %first% EQU 1 (
  echo %~1
  set first=0
) else (
  set first=1
)

Køres med kommandoen:
whatever.bat input.txt >output.txt
Avatar billede boomla Nybegynder
25. marts 2008 - 02:32 #4
Hej Igen

Tak arne v, men var en bat fil jeg var efter (Beklager lagde ikke mærke til at jeg havde smidt den i c++ Katogerien)

bertelbrander er du der :-) jeg må have en lille smule mere hjælp her :-) Du har sikkert og svaret allerede på det, men jeg er noob her :-)

Har pt. Danish.txt med ordene, hvordan kan jeg bruge din løsning til dette. Da jeg skrev det med rename.bat, smid jeg .bat filen i mappen med filerne og exevirede, men hvad gør jeg her :-)

MAnge tak på forhånd ...
Avatar billede bertelbrander Novice
25. marts 2008 - 02:37 #5
Du lægger blot .bat filen i samme mappe som Danish.txt filen.
Så kører du kommandoen:
rename.bat Danish.txt > output.txt

Så kommer output, hver anden linie fra Danish.txt, i output.txt filen.
Du skal køre kommandoen i en kommando-prompt.
Avatar billede boomla Nybegynder
25. marts 2008 - 02:42 #6
Hej igen

Bære an med mig :-)

Jeg gjorede følgende :

Kopirede disse :

@echo off
set first=1
for /F "tokens=*" %%I in ('type %1') do call :Process "%%I"
goto :eof

:Process
if %first% EQU 1 (
  echo %~1
  set first=0
) else (
  set first=1
)

i en tekst fil og omdøbte den til rename.bat, smid Danish.txt + remane.bat i en mappe og exevirede rename.bat, men der skete intet, fik ikke noget output.txt ???

vh..
Avatar billede boomla Nybegynder
25. marts 2008 - 02:43 #7
ohh så ikke de sidste line i dit svar :-.) prøver lige igen
Avatar billede boomla Nybegynder
25. marts 2008 - 02:47 #8
LoL kan bare ikke det her, beklager :-) men du får stadig 200 for at have prøvet :-)

Har du 2. sec til at gøre det for mig hvis jeg uploade Danish.txt til dig heheheh
Avatar billede bertelbrander Novice
25. marts 2008 - 02:51 #9
Du kan lave .bat filen om til:

@echo off
del /Q Output.txt>nul 2>&1
set first=1
for /F "tokens=*" %%I in ('type Danish.txt') do call :Process "%%I"
goto :eof

:Process
if %first% EQU 1 (
  echo %~1 >>Output.txt
  set first=0
) else (
  set first=1
)

Så kan du køre den ved at dobbelt klikke på .bat filen.
Jeg er på vej i seng.
Avatar billede boomla Nybegynder
25. marts 2008 - 02:54 #10
Wow næsten :-)

det virkede men får ikke alle ordene med, nogle ser sådan ud :

anmeldelse
annonce
anrette
ansatte
ECHO er sl†et fra.
ECHO er sl†et fra.
ECHO er sl†et fra.
ECHO er sl†et fra.
ECHO er sl†et fra.
ECHO er sl†et fra.
ECHO er sl†et fra.
ECHO er sl†et fra.
ECHO er sl†et fra.
ECHO er sl†et fra.
ECHO er sl†et fra.
ECHO er sl†et fra.
ECHO er sl†et fra.
applaus
april
apropos
araber
arbejde
arbejder
arbejdsløs

Godnat og mange mange tak for hjælpen :-)
Avatar billede bertelbrander Novice
25. marts 2008 - 19:36 #11
Noget kunne tyde på at der er tomme linier i filen, kan det passe?
Du kan evt. uploade den, så skal jeg se på det.
Avatar billede boomla Nybegynder
25. marts 2008 - 19:51 #12
Hej igen

Og tak for at svarede, her er linket til filen, har uploadet den på myupload.dk :-)
http://www.myupload.dk/showfile/367701e215.rar/
Jo der var mellemrum i teksten nu du nævner det :-) men du har sikkeret en løsning til det :-)

Håber at høre fra dig snarest ..

vh.
Avatar billede boomla Nybegynder
25. marts 2008 - 19:53 #13
Og så en lille ting til, hvordan afgiver jeg de 200p jeg afsat :-) det er snart længe siden ...

vh
Avatar billede boomla Nybegynder
25. marts 2008 - 20:31 #14
Hej igen

Her er en bedere struktureret Danish.txt hvor jeg fjernede mellemrummet

http://www.myupload.dk/showfile/36784a052a.rar/

Vh.
Avatar billede bertelbrander Novice
25. marts 2008 - 20:37 #15
Jeg kikker på det.
Avatar billede bertelbrander Novice
25. marts 2008 - 20:46 #16
Prøv med denne, med den orginale Danish.txt

@echo off
del /Q Output.txt>nul 2>&1
for /F "delims=; tokens=*" %%I in ('type Danish.txt') do call :Process "%%I"
goto :eof

:Process
set QQ=%~1
set QQ=%QQ: =-%
set QQ=%QQ:~0,1%
if [%QQ%]==
  • goto :eof
echo %~1 >>output.txt
Avatar billede boomla Nybegynder
25. marts 2008 - 22:11 #17
Tada :-)

Nu til hvordan jeg kan overføre de 200 til dig :-) ???

Vh..

10000 tak for hjælpen
Avatar billede bertelbrander Novice
25. marts 2008 - 22:29 #18
Normal ville der blive lagt et "svar" som du derpå kunne acceptere og derved give point.

Men jeg samler ikke på point.
Avatar billede boomla Nybegynder
25. marts 2008 - 22:54 #19
:-) Du skal have MANGE tak, det sparede mig megen tid ....

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