• Login
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.9k 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.
  • P
    PeterJones @Thomas 2020
    last edited by Jul 31, 2020, 9:00 PM

    @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
    • P
      pokemon go @Yudi_Kondo
      last edited by Jul 19, 2022, 8:35 AM

      @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
      • P
        pokemon go
        last edited by Jul 20, 2022, 7:56 AM

        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

        P 1 Reply Last reply Jul 20, 2022, 12:57 PM Reply Quote 0
        • G
          guy038
          last edited by guy038 Jul 20, 2022, 11:39 AM Jul 20, 2022, 10:45 AM

          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
          • P
            PeterJones @pokemon go
            last edited by Jul 20, 2022, 12:57 PM

            @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