26. april 2004 - 16:16Der er
8 kommentarer og 1 løsning
Søg og erstat i tekst fil fra commandoline
Jeg har/får en masse tekstfile hvor i jeg gerne vil slette nogle tekst strenge. Det jeg vil slette vil være det samme fra gang til gang. Det er ca 10 linier, der vil stå midt i eller sidst i tekstfilen. Jeg vil gerne kunne søge på mere en en line af gangen, da der er 2 ens linier, hvoraf kun den sidste skal slettes. Det skal kunne startes fra en commandolinie/Command Prompt.
Scriptet vil bliver kørt på Windows 2000 maskiner fra CAD program (ProEngineer), v.h.a. en simpel makro funktion. Den del af det har jeg styr på.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Det er, mig bekendt, ikke muligt at lave det med standard Win2000 kommandoer, hvis filen indeholder ret meget andet en triviel text (som f.ex. & eller |).
Hvis vi må se indholdet af filen og få at vide hvad det er der skal slettes er det muligt at vi kan finde en løsning.
/* +++++system relation do not delete or change+++++jnoval-april2004 /* get date from intralink if string_length(design_date)!=10 | design_date=="dd-mm-yyyy" design_date=extract(PROI_CREATED_ON,4,2)+"-"+extract(PROI_CREATED_ON,1,2)+"-"+extract(PROI_CREATED_ON,7,4) endif /* get drawn by from Intralink if string_length(drawn_by)<4 drawn_by=extract(PROI_CREATED_BY,1,string_length(proi_created_by)) endif /* get article_no from model name article_no=rel_model_name() /* define material parameter MTRL_STAND=extract(material_param("CONDITION"),1,(search(material_param("CONDITION"),","))-1) MATERIAL=extract(material_param("CONDITION"),\ (search(material_param("CONDITION"),",") +1),(string_length(material_param("CONDITION"))-(search(material_param("CONDITION"),",")))) RAW_MTRL_ID=material_param("EMISSIVITY") /* +++++add your own model relation after here+++++
/* define mass parameter do not delete!! mass=mp_mass("") area=mp_surf_area("") volume=mp_volume("")/1000 /* define material parameter do not delete!! mat_where1=search(material_param("CONDITION"),",") mat_where2=(string_length(material_param("CONDITION"))-mat_where1) MTRL_STAND=extract(material_param("CONDITION"),1,mat_where1-1) MATERIAL=extract(material_param("CONDITION"),mat_where1+1,mat_where2) RAW_MTRL_ID=material_param("EMISSIVITY")
d10=d11
Det er linie 19 til 28 der skal slettes. Vi kan bruge linie nr til at slette, da det ikke altid passer. Men teksten der skal slettes er den samme. Jeg vil gerne have mulighed for at kunne ændre den tekst der skal slettes, forstået på den måde at jeg en anden gang måske vil slette en anden tekst. Bemærk at linie 16 og 28 er de samme og linie 16 skal ikke slettes.
Nå jeg kan se at eksperten ændre linie bredden. Så det er følgende linier der skal slettes:
/* define mass parameter do not delete!! mass=mp_mass("") area=mp_surf_area("") volume=mp_volume("")/1000 /* define material parameter do not delete!! mat_where1=search(material_param("CONDITION"),",") mat_where2=(string_length(material_param("CONDITION"))-mat_where1) MTRL_STAND=extract(material_param("CONDITION"),1,mat_where1-1) MATERIAL=extract(material_param("CONDITION"),mat_where1+1,mat_where2) RAW_MTRL_ID=material_param("EMISSIVITY")
Denne linie står 2 gange og det er kun den sidste der skal slettes: RAW_MTRL_ID=material_param("EMISSIVITY")
Det er fornemt at du sådan laver program til mig. Tak. Desværre kan jeg ikke helt bruge det. Jeg kan ikke være sikker på at der er en tom linie i slutningen af det jeg vil slette. Kan du evt. lave det med en tekstfil som input til det der skal slettes. rmlines.exe deletelines.txt filename.in >filename.out
Ja men så vil jeg da gerne have lov til at takke dig mange gange. Det har været en stor hjælp. tak tak atk...
Synes godt om
Ny brugerNybegynder
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.