Permalänk
Medlem

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

Visa signatur

AMD 7800X3D | ASUS TUF X670E-PLUS | Corsair Vengeance DDR5 32GB EXPO | ASUS TUF 4090 OC 24GB |
Noctua NH-U12A | Corsair 4000D | Corsair AX1200W | Steelseries Apex 7 | Steelseries Sensei Ten | ASUS VG35VQ

https://github.com/Mariusz89B

Permalänk
Medlem

Ä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

Permalänk
Medlem

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.

Visa signatur

Grubblare

Permalänk
Medlem
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.

Visa signatur

AMD 7800X3D | ASUS TUF X670E-PLUS | Corsair Vengeance DDR5 32GB EXPO | ASUS TUF 4090 OC 24GB |
Noctua NH-U12A | Corsair 4000D | Corsair AX1200W | Steelseries Apex 7 | Steelseries Sensei Ten | ASUS VG35VQ

https://github.com/Mariusz89B

Permalänk
Medlem
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.

Visa signatur

AMD 7800X3D | ASUS TUF X670E-PLUS | Corsair Vengeance DDR5 32GB EXPO | ASUS TUF 4090 OC 24GB |
Noctua NH-U12A | Corsair 4000D | Corsair AX1200W | Steelseries Apex 7 | Steelseries Sensei Ten | ASUS VG35VQ

https://github.com/Mariusz89B

Permalänk
Medlem

regex (regular expressions)

Permalänk
Medlem
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

Visa signatur

AMD 7800X3D | ASUS TUF X670E-PLUS | Corsair Vengeance DDR5 32GB EXPO | ASUS TUF 4090 OC 24GB |
Noctua NH-U12A | Corsair 4000D | Corsair AX1200W | Steelseries Apex 7 | Steelseries Sensei Ten | ASUS VG35VQ

https://github.com/Mariusz89B

Permalänk
Medlem

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

Permalänk
Medlem

@M89: Då missförstod jag helt

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

Visa signatur

Grubblare

Permalänk
Legendarisk

@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
Visa signatur

Abstractions all the way down.

Permalänk
Medlem
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!

Visa signatur

AMD 7800X3D | ASUS TUF X670E-PLUS | Corsair Vengeance DDR5 32GB EXPO | ASUS TUF 4090 OC 24GB |
Noctua NH-U12A | Corsair 4000D | Corsair AX1200W | Steelseries Apex 7 | Steelseries Sensei Ten | ASUS VG35VQ

https://github.com/Mariusz89B

Permalänk
Medlem
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

Visa signatur

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

Permalänk
Medlem

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

Permalänk
Legendarisk

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

Visa signatur

Abstractions all the way down.

Permalänk
Medlem

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.

Visa signatur

Linux och Android

Permalänk
Legendarisk
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?

Visa signatur

Abstractions all the way down.

Permalänk
Medlem
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.

Visa signatur

AMD 7800X3D | ASUS TUF X670E-PLUS | Corsair Vengeance DDR5 32GB EXPO | ASUS TUF 4090 OC 24GB |
Noctua NH-U12A | Corsair 4000D | Corsair AX1200W | Steelseries Apex 7 | Steelseries Sensei Ten | ASUS VG35VQ

https://github.com/Mariusz89B

Permalänk
Medlem

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

Visa signatur

AMD 7800X3D | ASUS TUF X670E-PLUS | Corsair Vengeance DDR5 32GB EXPO | ASUS TUF 4090 OC 24GB |
Noctua NH-U12A | Corsair 4000D | Corsair AX1200W | Steelseries Apex 7 | Steelseries Sensei Ten | ASUS VG35VQ

https://github.com/Mariusz89B

Permalänk
Medlem
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

Visa signatur

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