Trädvy Permalänk
Medlem
Registrerad
Jun 2005

Ersätta ord med rad nummer?

Hej,

Undrar om där finns något knep med att ersätta ett ord med radnummer? Använder mig utav notepad++ för tillfället men hittar ingen lösning med reguljära utryck.

ex.

text x text x text x

text 1 text 2 text 3

Intel Core i7-8700K | ASUS STRIX Z370-F | Corsair Vengeance LED 16GB | ASUS STRIX 1080 Ti OC | Corsair H80i | Corsair Q400 | Corsair AX1200W | Corsair Strafe RGB | Corsair M65 RGB PRO | Corsair VOID RGB PRO
https://github.com/M89SE/script.mtvguide

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Aug 2013

Är det en loop du kör? Vilket kodningsspråk? Är orden alltid samma eller är det olika ord?

Skickades från m.sweclockers.com

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Mar 2015

Vet inte om detta fortfarande stämmer:

Open the text file in Notepad++. In the top menu bar, click Search and select Replace. In the Replace window, on the Replace tab, enter the text you want to find and the text you want to use as a replacement. See our using search and replace and advanced options for further information and help.

Tror väl att det görs utan regex (använder inte Notepad++) på det sättet.

I'm not having a glass of wine, I'm having six! It's called a tasting and it's classy!

Trädvy Permalänk
Medlem
Registrerad
Jun 2005
Skrivet av zaibuf:

Är det en loop du kör? Vilket kodningsspråk? Är orden alltid samma eller är det olika ord?

Skickades från m.sweclockers.com

Orden är alltid samma, inget specifikt programmeringsspråk.

Intel Core i7-8700K | ASUS STRIX Z370-F | Corsair Vengeance LED 16GB | ASUS STRIX 1080 Ti OC | Corsair H80i | Corsair Q400 | Corsair AX1200W | Corsair Strafe RGB | Corsair M65 RGB PRO | Corsair VOID RGB PRO
https://github.com/M89SE/script.mtvguide

Trädvy Permalänk
Medlem
Registrerad
Jun 2005
Skrivet av drwlz:

Vet inte om detta fortfarande stämmer:

Open the text file in Notepad++. In the top menu bar, click Search and select Replace. In the Replace window, on the Replace tab, enter the text you want to find and the text you want to use as a replacement. See our using search and replace and advanced options for further information and help.

Tror väl att det görs utan regex (använder inte Notepad++) på det sättet.

Tyvärr inte detta jag letar efter, hur man ersätter ord vet jag redan eftersöker hur man ersätter ett och samma ord med olika radnummer.

Intel Core i7-8700K | ASUS STRIX Z370-F | Corsair Vengeance LED 16GB | ASUS STRIX 1080 Ti OC | Corsair H80i | Corsair Q400 | Corsair AX1200W | Corsair Strafe RGB | Corsair M65 RGB PRO | Corsair VOID RGB PRO
https://github.com/M89SE/script.mtvguide

Trädvy Permalänk
Medlem
Plats
Där min VPN visar
Registrerad
Jan 2005

regex (regular expressions)

Trädvy Permalänk
Medlem
Registrerad
Jun 2005
Skrivet av Undie:

regex (regular expressions)

Ja men hur? Reguljära uttryck har jag ju redan provat hittar ingen lösning.

Reguljära uttryck = regex

Intel Core i7-8700K | ASUS STRIX Z370-F | Corsair Vengeance LED 16GB | ASUS STRIX 1080 Ti OC | Corsair H80i | Corsair Q400 | Corsair AX1200W | Corsair Strafe RGB | Corsair M65 RGB PRO | Corsair VOID RGB PRO
https://github.com/M89SE/script.mtvguide

Trädvy Permalänk
Medlem
Plats
Sthlm
Registrerad
Apr 2004

Jag skulle använt Powershell

Om du vill räkna antalet träffar istället för radnumret får du flytta in $rad++ i IF-satsen.

$rad = 0 $tmp = Get-Content input.txt $out = @() foreach($row in $tmp) { $rad++ $n = [regex]::match($row,'(text x)').groups[1].value if($n) { $out += $row -replace "$n", ("text " + $rad) } else { $out += $row } } $out

Men det tipsas även om ett verktyg som heter Textpad i länken jag lånade scriptet från.
https://stackoverflow.com/questions/7602816/notepad-increment...

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Mar 2015

@M89: Då missförstod jag helt

Kan detta vara ett alternativ?
https://stackoverflow.com/a/26224391

I'm not having a glass of wine, I'm having six! It's called a tasting and it's classy!

Trädvy Permalänk
Legendarisk
Hedersmedlem
Plats
::1
Registrerad
Dec 2002

@henkiii: +1 för powershell, men det går att skriva som en oneliner eftersom att texten kan pipas till ForEach-Object och man kan ge replace ett reguljärt uttryck direkt.

Get-Content in.txt | ForEach-Object -Begin { $i = 0 } -Process { $_ -replace "x$", ++$i }

Eller förkortat:

cat in.txt | % { $i = 0 } { $_ -replace "x$", ++$i }

text x text x text x

text 1 text 2 text 3

Resultat

Abstractions all the way down.

Trädvy Permalänk
Medlem
Registrerad
Jun 2005
Skrivet av henkiii:

Jag skulle använt Powershell

Om du vill räkna antalet träffar istället för radnumret får du flytta in $rad++ i IF-satsen.

$rad = 0 $tmp = Get-Content input.txt $out = @() foreach($row in $tmp) { $rad++ $n = [regex]::match($row,'(text x)').groups[1].value if($n) { $out += $row -replace "$n", ("text " + $rad) } else { $out += $row } } $out

Men det tipsas även om ett verktyg som heter Textpad i länken jag lånade scriptet från.
https://stackoverflow.com/questions/7602816/notepad-increment...

Skrivet av Biberu:

@henkiii: +1 för powershell, men det går att skriva som en oneliner eftersom att texten kan pipas till ForEach-Object och man kan ge replace ett reguljärt uttryck direkt.

Get-Content in.txt | ForEach-Object -Begin { $i = 0 } -Process { $_ -replace "x$", ++$i }

Eller förkortat:

cat in.txt | % { $i = 0 } { $_ -replace "x$", ++$i }

text x text x text x

text 1 text 2 text 3

Resultat

Helt underbart jag var och kikade just efter en powershell lösning då jag fick upp tråden via google, hade inte en susning att man kan använda regex med replace funktionen i ps. Stort tack!

Intel Core i7-8700K | ASUS STRIX Z370-F | Corsair Vengeance LED 16GB | ASUS STRIX 1080 Ti OC | Corsair H80i | Corsair Q400 | Corsair AX1200W | Corsair Strafe RGB | Corsair M65 RGB PRO | Corsair VOID RGB PRO
https://github.com/M89SE/script.mtvguide

Trädvy Permalänk
Medlem
Registrerad
Sep 2012
Skrivet av M89:

Hej,

Undrar om där finns något knep med att ersätta ett ord med radnummer? Använder mig utav notepad++ för tillfället men hittar ingen lösning med reguljära utryck.

ex.

text x text x text x

text 1 text 2 text 3

awk borde fungera för det här

awk '{ $2 = NR; print}' filnamn

OS: Manjaro i3 / Windows 10 Pro 64-bit MB: ASUS-Z97-A CPU: i7 4790k
NÄTAGG: EVGA SUPERNOVA G2
RAM: 8192 MB GPU: 1070 FTW Chassi: Fractal Design R4
MBP 13" i5 | 256GB | 16GB RAM | MID 2014

Trädvy Permalänk
Medlem
Plats
Sthlm
Registrerad
Apr 2004

@Biberu: Din kodsnutt ser ju fin ut

Jag gillar oneliners om dom blir snygga och begripliga, vilket mina egna sällan blir (gäller förvisso nästan allt jag skriver)
Ibland ser jag dock att man använder alias eller förkortningar till den grad att vad som sker blir svårtolkat för en icke insatt powershell-användare, som får det svårare att modifiera koden själv.

Trädvy Permalänk
Legendarisk
Hedersmedlem
Plats
::1
Registrerad
Dec 2002

@henkiii: Min korta variant är väl inte direkt självförklarande... För scripts som ska sparas brukar jag undvika andra alias än ? (Where-Object) och % (ForEach-Object) och istället skriva ut fullständiga namn och parametrar, men det är smidigt med kryptiska oneliners för saker som bara ska köras någon gång från terminalen.

Abstractions all the way down.

Trädvy Permalänk
Medlem
Plats
Småland, långt ute i mörka skogen.
Registrerad
Maj 2018

Enklaste är väl bara att redigera helt manuellt och skriva in radnumret där du vill ha det.

Om det inte duger så vore det bra om du förklarar varför. Det hela verkar märkligt.

Hade jag varit tvungen att göra detta, och jag inte trodde att det skulle gå snabbt nog manuellt, så skulle jag importera textfilen till libre calc (excel) och lägga till ett radnummer till varje rad, på lämplig plats. Och sedan exportera textfilen igen. Klart!

Skulle jag göra detta flera gånger dagligen en längre tid skulle jag skriva ett script eller program som gör samma sak.

Linux och Android

Trädvy Permalänk
Legendarisk
Hedersmedlem
Plats
::1
Registrerad
Dec 2002
Skrivet av Adoby:

Enklaste är väl bara att redigera helt manuellt och skriva in radnumret där du vill ha det.

Är du verkligen i rätt delforum nu?

Abstractions all the way down.

Trädvy Permalänk
Medlem
Registrerad
Jun 2005
Skrivet av Adoby:

Enklaste är väl bara att redigera helt manuellt och skriva in radnumret där du vill ha det.

Om det inte duger så vore det bra om du förklarar varför. Det hela verkar märkligt.

Hade jag varit tvungen att göra detta, och jag inte trodde att det skulle gå snabbt nog manuellt, så skulle jag importera textfilen till libre calc (excel) och lägga till ett radnummer till varje rad, på lämplig plats. Och sedan exportera textfilen igen. Klart!

Skulle jag göra detta flera gånger dagligen en längre tid skulle jag skriva ett script eller program som gör samma sak.

Blir jobbigt att ändra 26000 ord för hand, lättare att använda powershell.

Intel Core i7-8700K | ASUS STRIX Z370-F | Corsair Vengeance LED 16GB | ASUS STRIX 1080 Ti OC | Corsair H80i | Corsair Q400 | Corsair AX1200W | Corsair Strafe RGB | Corsair M65 RGB PRO | Corsair VOID RGB PRO
https://github.com/M89SE/script.mtvguide

Trädvy Permalänk
Medlem
Registrerad
Jun 2005

Fungerar mycket bra tack för all hjälp!

Så här blev slut resultatet:

Get-Content C:\Users\mariu\Desktop\test.txt -encoding UTF8 | ForEach-Object -Begin { $i = 0 } -Process { $_ -replace "x$", ++$i } | Out-File -Encoding UTF8 C:\Users\mariu\Desktop\test_new.txt

Intel Core i7-8700K | ASUS STRIX Z370-F | Corsair Vengeance LED 16GB | ASUS STRIX 1080 Ti OC | Corsair H80i | Corsair Q400 | Corsair AX1200W | Corsair Strafe RGB | Corsair M65 RGB PRO | Corsair VOID RGB PRO
https://github.com/M89SE/script.mtvguide

Trädvy Permalänk
Medlem
Registrerad
Sep 2012
Skrivet av M89:

Fungerar mycket bra tack för all hjälp!

Så här blev slut resultatet:

Get-Content C:\Users\mariu\Desktop\test.txt -encoding UTF8 | ForEach-Object -Begin { $i = 0 } -Process { $_ -replace "x$", ++$i } | Out-File -Encoding UTF8 C:\Users\mariu\Desktop\test_new.txt

Även om det är bra att kunna powershell får sådana här rader mig att inse att verktyg som är del av *Nix kärnarn är fan så mycket smidigare

OS: Manjaro i3 / Windows 10 Pro 64-bit MB: ASUS-Z97-A CPU: i7 4790k
NÄTAGG: EVGA SUPERNOVA G2
RAM: 8192 MB GPU: 1070 FTW Chassi: Fractal Design R4
MBP 13" i5 | 256GB | 16GB RAM | MID 2014