How to replace a line, which has a specific text, with the content of a specific line?
-
@Pan-Jan said in How to replace a line, which has a specific text, with the content of a specific line?:
Got it … don’t put patterns in quotation marks
Unfortunately, you completely misunderstood. It appears the language barrier is too big.
I will say it one more time. I will try to use short sentences. Hopefully your translator will understand.
- Put regex inside ` marks to make them red. This makes regex display as literal characters for the forum, without being edited.
- My example had quote marks as part of the regex, which is valid.
- Always use the quote marks you mean.
-
@Yudi_Kondo said in How to replace a line, which has a specific text, with the content of a specific line?:
@Terry-R Ok. There are 300 files that need to be modified and lines with the text “name”: “noname”, always appear after line 6.
Here one of the files:
01{ 02 "id": "Abomasnow", 03 "spawnInfos": [ 04 { 05 "spec": { 06 "name": "Abomasnow", 07 "growth": 6 08 }, 09 "minLevel": 40, 10 "maxLevel": 45, 11 "typeID": "pokemon", 12 "rarity": 8.0 13 }, 14 { 15 "spec": { 16 "name": "noname", 17 "growth": 6 18 }, 19 "stringLocationTypes": [ 20 "Land" 21 ], 22 "minLevel": 50, 23 "maxLevel": 50, 24 "typeID": "pokemon", 25 "tags": [ 26 "safari" 27 ], 28 "rarity": 120.0 29 }
Here line 16 would become line 06
And as for the solution that switched the lines, I was wrong. I used a macro the last time I edited these files
you cannot add pokemon add according to these rules
-
To replace a line, which has a specific text, with the content of a specific line:
-
Open your document in Microsoft Word
-
Select the paragraph that you want to replace with another text
-
Under the Home tab, click on the Replace tab
-
Type in the text that you want to replace, and then click on Search button
-
Click on Replace All button to replace all occurrences of your text with the new one
-
-
Hello, @yudi_kondo, @terry-r and All,
@yudi_kondo, I’m back to your initial question :
I need all lines that have the text : “name”: “noname”,
to be replaced by the contents of line 6
Then, assuming that exists only
1
string"noname"
per file and given the INPUT text below :01{ 02 "id": "Abomasnow", 03 "spawnInfos": [ 04 { 05 "spec": { 06 "name": "Abomasnow", 07 "growth": 6 08 }, 09 "minLevel": 40, 10 "maxLevel": 45, 11 "typeID": "pokemon", 12 "rarity": 8.0 13 }, 14 { 15 "spec": { 16 "name": "noname", 17 "growth": 6 18 }, 19 "stringLocationTypes": [ 20 "Land" 21 ], 22 "minLevel": 50, 23 "maxLevel": 50, 24 "typeID": "pokemon", 25 "tags": [ 26 "safari" 27 ], 28 "rarity": 120.0 29 }
I think that this more simple regex S/R is enough to perform the goal :
SEARCH
(?-is)\A((?:.+\R){5}\d+(.+\R))((?:.+\R)+\d+).+"noname".+\R
REPLACE
\1\3\2
You should be left with this OUTPUT text :
01{ 02 "id": "Abomasnow", 03 "spawnInfos": [ 04 { 05 "spec": { 06 "name": "Abomasnow", 07 "growth": 6 08 }, 09 "minLevel": 40, 10 "maxLevel": 45, 11 "typeID": "pokemon", 12 "rarity": 8.0 13 }, 14 { 15 "spec": { 16 "name": "Abomasnow", 17 "growth": 6 18 }, 19 "stringLocationTypes": [ 20 "Land" 21 ], 22 "minLevel": 50, 23 "maxLevel": 50, 24 "typeID": "pokemon", 25 "tags": [ 26 "safari" 27 ], 28 "rarity": 120.0 29 }
Where only the line
16
is changed from :16 "name": "noname",
to :
16 "name": "Abomasnow",
In order to fully understand my regex S/R, here is the free-spacing version, using the
(?x)
in-line modifier :(?x-is) # FREE-SPACING mode and DOT match STANDARD characters ONLY \A # From BEGINNING of CURRENT file ( # BEGINING of group 1 ( Lines 1 to 6 ) (?: .+ \R){5} # First NON-CAPTURING group ( Lines 1 to 5 ) \d+ # BEGINNING of line 06 ( Number ) ( .+\R ) # Group 2 ( REMAINDER of the line 06 with its LINE-BREAK ) ) # End of group 1 ( # BEGINNING of group 3 (?: .+\R )+ \d+ # Second NON-CAPTURING group ( ENTIRE Lines 07 to 15 + BEGINNING of line 16 or any OTHER line ) ) # END of group 3 .+ "noname" .+ \R # Remainder of line 16, containing the string "noname", with that CASE or any OTHER line
In case that there’s no leading numbers, my regex S/R becomes :
SEARCH
(?-is)\A((?:.+\R){5}(.+\R))((?:.+\R)+).+"noname".+\R
REPLACE
\1\3\2
or, in free-spacing mode :
(?x-is) # FREE-SPACING mode and DOT match STANDARD characters ONLY \A # From BEGINNING of CURRENT file ( # BEGINING of group 1 ( Lines 1 to 6 ) (?: .+ \R){5} # First NON-CAPTURING group ( Lines 1 to 5 ) ( .+\R ) # Group 2 ( Line 06 with its LINE-BREAK ) ) # End of group 1 ( # BEGINNING of group 3 (?: .+\R )+ # Second NON-CAPTURING group (ENTIRE Lines 07 to 15 ) ) # END of group 3 .+ "noname" .+ \R # line 16, containing the string "noname", with that CASE or any OTHER line
Best Regards,
guy038
-
This is a Notepad++ forum. Notepad++ is perfectly capable of doing the search and replace. There is no reason, in this Forum, to recommend switching to a proprietary, costly word processor to do a simple search-and-replace rather than using the free-and-open-source Notepad++ text editor that is that is the subject of this forum and has all the features necessary to make the change requested.