Community
    • Login

    How to replace a line, which has a specific text, with the content of a specific line?

    Scheduled Pinned Locked Moved Help wanted · · · – – – · · ·
    25 Posts 7 Posters 7.9k Views 1 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • PeterJonesP Offline
      PeterJones @Thomas 2020
      last edited by

      @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.
      1 Reply Last reply Reply Quote 0
      • pokemon goP Offline
        pokemon go @Yudi_Kondo
        last edited by

        @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

        1 Reply Last reply Reply Quote 0
        • pokemon goP Offline
          pokemon go
          last edited by

          To replace a line, which has a specific text, with the content of a specific line:

          1. Open your document in Microsoft Word

          2. Select the paragraph that you want to replace with another text

          3. Under the Home tab, click on the Replace tab

          4. Type in the text that you want to replace, and then click on Search button

          5. Click on Replace All button to replace all occurrences of your text with the new one

          PeterJonesP 1 Reply Last reply Reply Quote 0
          • guy038G Offline
            guy038
            last edited by guy038

            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

            1 Reply Last reply Reply Quote 0
            • PeterJonesP Offline
              PeterJones @pokemon go
              last edited by

              @pokemon-go ,

              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.

              1 Reply Last reply Reply Quote 1

              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
              • First post
                Last post
              The Community of users of the Notepad++ text editor.
              Powered by NodeBB | Contributors