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
1string"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".+\RREPLACE
\1\3\2You 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
16is 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".+\RREPLACE
\1\3\2or, 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 lineBest 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.
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login