Oknok Skrevet 29. september Del Skrevet 29. september Hvis man vil fjerne tusenvis av linjer i en tekstfil, og alle linjene jeg vil fjerne er unike, men de har noen ord til felles, hvordan gjør man? F.eks har jeg en tekstfil med 65000 linjer. Jeg ønsker å samle visse linjer med relevant informasjon for akkurat det jeg ser etter. Men den informasjonen drukner da 95% av linjene er uten interesse i denne sammenhengen. Verktøyene jeg har til rådighet er Notepad, Notepad++, Wordpad, diverse nettlesere. Ikke den mest imponerende verktøykassen, jeg vet. Lenke til kommentar
Salvesen. Skrevet 29. september Del Skrevet 29. september Vanskelig å si uten mer info, men jeg hadde nok matet det igjennom noe C# kode Lenke til kommentar
Oknok Skrevet 29. september Forfatter Del Skrevet 29. september 2 minutes ago, Salvesen. said: Vanskelig å si uten mer info, men jeg hadde nok matet det igjennom noe C# kode Jeg har hørt om C# og nå har jeg sagt alt jeg vet om C#. Håpet Notepad++ hadde en metode som kunne brukes. Jeg har ca en halvtimes erfaring med Notepad++ og har ikke oversikt over hva det kan gjøre. Det er ikke så mye å vite om dette. Bare at det er mange tusen linjer og jeg ønsker å fjerne alle som har enkelte ord til felles. Kunne også gjort det den motsatte veien og kun søkt etter linjer som har data jeg er interessert i, men jeg er ikke sikker på hva alle søkeordene er. Det virker da lettere å angripe det med å fjerne ting som er i veien. Lenke til kommentar
likferd Skrevet 29. september Del Skrevet 29. september La meg introdusere deg til Regex 1 Lenke til kommentar
Oknok Skrevet 29. september Forfatter Del Skrevet 29. september (endret) 12 minutes ago, likferd said: La meg introdusere deg til Regex Takk for forslaget. Men det er en funksjon for å erstatte det som blir funnet med noe annet. Det jeg trenger er noe annet. Hvis en linje inneholder f.eks POSITION pluss en masse annet, ønsker jeg å slette *hele den linjen*. Endret 29. september av Oknok Presisering Lenke til kommentar
Vintersko Skrevet 29. september Del Skrevet 29. september Awk er vel effektivt her. 1 1 Lenke til kommentar
barfoo Skrevet 29. september Del Skrevet 29. september (endret) 9 minutes ago, Oknok said: Takk for forslaget. Men det er en funksjon for å erstatte det som blir funnet med noe annet. Nei, regexp er ein måte for å matche tekst. ^.*test.*$ vil matche alle linjer som inneheld ordet test. Om du då erstatter dei med ingenting så har du fjerna dei. ^ matcher start of line, . er any character, * er null eller fleire av forrige, test er rett fram, $ er end of line. Endret 29. september av barfoo 3 Lenke til kommentar
Phantom Software Skrevet 29. september Del Skrevet 29. september Kan jo prøve å mate det inn i notebookLM og be den fikse det for deg. Lenke til kommentar
Salvesen. Skrevet 29. september Del Skrevet 29. september Oknok skrev (41 minutter siden): Jeg har hørt om C# og nå har jeg sagt alt jeg vet om C#. Håpet Notepad++ hadde en metode som kunne brukes. Jeg har ca en halvtimes erfaring med Notepad++ og har ikke oversikt over hva det kan gjøre. Det er ikke så mye å vite om dette. Bare at det er mange tusen linjer og jeg ønsker å fjerne alle som har enkelte ord til felles. Kunne også gjort det den motsatte veien og kun søkt etter linjer som har data jeg er interessert i, men jeg er ikke sikker på hva alle søkeordene er. Det virker da lettere å angripe det med å fjerne ting som er i veien. Så du ønsker å fjerne hver linje som har ett eller flere ord i seg? Lenke til kommentar
Zash Skrevet 29. september Del Skrevet 29. september Litt dårlig forklart hvordan du indentifiserer hvilke linjer du ønsker å fjerne, men sånn jeg forstår da identifiserer de med ett eller flere ord. Dette er veldig enkelt i Notepad++. Du åpner først filen du skal jobbe med. Trykker ctrl+F for å få opp søkefunksjon (eventuelt Search på menyen, og så Find). I søkefunksjonen velger du Mark (fanen til høyre), og sørger for at "Bookmark Line" er på. Så skriver du inn søkeordet ditt, og velger Mark All. Har du flere søkeord, kan du gjøre dette flere ganger, de markerte linjene blir behold. Da skal alle linjene du har markert fått en blå ring ved siden av linjenummeret. Deretter velger du Search på meny-linjen, og nesten helt nede er det et alternativ som heter "Bookmark". Der skal du velge "Remove Bookmarked Lines". 2 2 Lenke til kommentar
Thor. Skrevet 29. september Del Skrevet 29. september Metoden over har jeg benyttet mye til å fjerne mange linjer med spesifikke treff. Lenke til kommentar
Chris93 Skrevet 29. september Del Skrevet 29. september Zash skrev (51 minutter siden): Litt dårlig forklart hvordan du indentifiserer hvilke linjer du ønsker å fjerne, men sånn jeg forstår da identifiserer de med ett eller flere ord. Dette er veldig enkelt i Notepad++. Du åpner først filen du skal jobbe med. Trykker ctrl+F for å få opp søkefunksjon (eventuelt Search på menyen, og så Find). I søkefunksjonen velger du Mark (fanen til høyre), og sørger for at "Bookmark Line" er på. Så skriver du inn søkeordet ditt, og velger Mark All. Har du flere søkeord, kan du gjøre dette flere ganger, de markerte linjene blir behold. Da skal alle linjene du har markert fått en blå ring ved siden av linjenummeret. Deretter velger du Search på meny-linjen, og nesten helt nede er det et alternativ som heter "Bookmark". Der skal du velge "Remove Bookmarked Lines". Ganske så tungvint i forhold til å bruke regex 1 Lenke til kommentar
Oknok Skrevet 29. september Forfatter Del Skrevet 29. september (endret) 57 minutes ago, Zash said: Litt dårlig forklart hvordan du indentifiserer hvilke linjer du ønsker å fjerne, men sånn jeg forstår da identifiserer de med ett eller flere ord. Dette er veldig enkelt i Notepad++. Du åpner først filen du skal jobbe med. Trykker ctrl+F for å få opp søkefunksjon (eventuelt Search på menyen, og så Find). I søkefunksjonen velger du Mark (fanen til høyre), og sørger for at "Bookmark Line" er på. Så skriver du inn søkeordet ditt, og velger Mark All. Har du flere søkeord, kan du gjøre dette flere ganger, de markerte linjene blir behold. Da skal alle linjene du har markert fått en blå ring ved siden av linjenummeret. Deretter velger du Search på meny-linjen, og nesten helt nede er det et alternativ som heter "Bookmark". Der skal du velge "Remove Bookmarked Lines". Sagt på ein annen måte vil jeg slette alle linjer som inneholder et bestemt ord. Det du foreslår virker som en enkel måte, men jeg har skjult linjenummer i Notepad++ og nå finner jeg ikke hvor man slår dem på. 😛 Leter i "View" drop down menu og kan ikke finne det. Leter andre steder også. Skal også set på RegEx når jeg klarer å konse. Just nå er det uklart hvordan den brukes. Jeg installerte en plugin som heter "Regex Trainer". Endret 29. september av Oknok Lenke til kommentar
SuperKrokodille Skrevet 29. september Del Skrevet 29. september Chris93 skrev (8 minutter siden): Ganske så tungvint i forhold til å bruke regex Til gjengjeld tar jo metoden ti sekunder å lære da. Ikke mye vits i å bruke tid på å lære seg RegEx om man ikke har bruk for slikt siden. 2 Lenke til kommentar
backtoback Skrevet 29. september Del Skrevet 29. september (endret) Oknok skrev (31 minutter siden): Det du foreslår virker som en enkel måte, men jeg har skjult linjenummer i Notepad++ og nå finner jeg ikke hvor man slår dem på. 😛 Leter i "View" drop down menu og kan ikke finne det. Leter andre steder også. Notepad++ v8.7 (64-bit) -- Menyline: Settings > Preferences... > Margins/Borders/Edge Endret 29. september av backtoback versjon 1 Lenke til kommentar
Abigor Skrevet 29. september Del Skrevet 29. september (endret) Dette tar 2 min med hvilket som helst programmeringsspråk. Samme om du velger C#, Java, Python, selv Javascript fikser denne jobben. ChatGPT vil gi deg et fullverdig program på sekunder. Du kan også bruke regex (med eller uten nevnte programmeringsspråk). For mer komplisert logikk foretrekker jeg å kode det fremfor regex, da regex er mye vanskeligere å lese/forstå. Endret 29. september av Abigor 1 Lenke til kommentar
Chris93 Skrevet 29. september Del Skrevet 29. september SuperKrokodille skrev (16 minutter siden): Til gjengjeld tar jo metoden ti sekunder å lære da. Ikke mye vits i å bruke tid på å lære seg RegEx om man ikke har bruk for slikt siden. Kanskje, men nå har jo man allerede fått løsningen her i tråden, som ikke tar lange tiden å bruke heller. Dessuten så er premisset ditt om at dette skal kun brukes en gang ikke noe vi vet noe om, og andre som finner denne tråden kan ha nytte av det. 1 Lenke til kommentar
sk0yern Skrevet 29. september Del Skrevet 29. september (endret) Oknok skrev (3 timer siden): Jeg har hørt om C# og nå har jeg sagt alt jeg vet om C#. Håpet Notepad++ hadde en metode som kunne brukes. Jeg har ca en halvtimes erfaring med Notepad++ og har ikke oversikt over hva det kan gjøre. Det er ikke så mye å vite om dette. Bare at det er mange tusen linjer og jeg ønsker å fjerne alle som har enkelte ord til felles. Kunne også gjort det den motsatte veien og kun søkt etter linjer som har data jeg er interessert i, men jeg er ikke sikker på hva alle søkeordene er. Det virker da lettere å angripe det med å fjerne ting som er i veien. Hvis du har tilgang på en mac, eller Linux maskin gjør du dette lett med egrep. Sitat egrep -v 'A|B|C' my_text Endret 29. september av sk0yern Lenke til kommentar
backtoback Skrevet 29. september Del Skrevet 29. september (endret) Microsoft Copilot var så snill å lage et regex-mønster med forklaring til meg . Det fungerte som det skulle når jeg testet det. "Just testing": You Kan du lage et regex-mønster for notepad++ for å fjerne alle linjer som inneholder ordet `POSITION`? Copilot Selvfølgelig! For å fjerne alle linjer som inneholder ordet POSITION i Notepad++, kan du bruke følgende regex-mønster: 1. Åpne Notepad++. 2. Trykk Ctrl + H for å åpne “Replace...”-vinduet. 3. Velg “Replace” fanen. 4. I “Find what” feltet, skriv inn følgende regex-mønster: ^.*\bPOSITION\b.*\R Dette mønsteret betyr: ^: Dette angir starten på en linje. .*: Dette matcher ethvert tegn (unntatt linjeskift) null eller flere ganger. \b: Dette er en ordgrense. Det sikrer at “POSITION” matches som et helt ord, ikke som en del av et annet ord (f.eks. “positions” eller “deposition”). POSITION: Dette er den bokstavelige strengen “POSITION”. \b: En annen ordgrense for å sikre at “POSITION” matches som et helt ord. .*: Igjen, dette matcher ethvert tegn (unntatt linjeskift) null eller flere ganger. \R: Dette matcher enhver Unicode linjeskiftsekvens (f.eks. \n, \r\n, osv.). Oppsummert matcher dette regex-mønsteret enhver linje som inneholder hele ordet “POSITION” hvor som helst i linjen. \R på slutten sikrer at matchen inkluderer linjeskiftet på slutten av linjen. 5. La “Replace with” feltet være tomt. 6. Sørg for at “Search Mode” er satt til “Regular expression”. 7. Klikk på “Replace All”. Dette vil fjerne alle linjer som inneholder ordet POSITION. Endret 1. oktober av backtoback "just testing" 1 Lenke til kommentar
quantum Skrevet 17. oktober Del Skrevet 17. oktober Oknok skrev (På 29.9.2024 den 6:33 PM): Takk for forslaget. Men det er en funksjon for å erstatte det som blir funnet med noe annet. det kan brukes til det også. men du kan gjøre akkurat hva du vil med det som matcher. i ditt tilfelle ville det vært å la "noe annet" være "ingenting". Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå