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