Community
    • Login

    Find One Line of Text, Then Backup the next Line Above & paste

    Scheduled Pinned Locked Moved Help wanted · · · – – – · · ·
    6 Posts 4 Posters 1.3k 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.
    • Bill HolderB
      Bill Holder
      last edited by

      I would like to do a Search & replace, but this is not as simple as I thouht.
      Here is an example:
      I want to find 2 DATE 1920
      Then the next line it must equal 1 RESI Like shown below.
      1 RESI
      2 DATE 1920

      If all is TRUE, then Select the line having 1 RESI
      Replace it with:
      1 EVEN
      2 TYPE 1920 US Federal Census

      I need to do this with other dates, like 1800, 1810, 1820, 1830, etc.

      Any help would be appreciated. Being doing a Find, conform next line equals 1 RESI then Selecting it and pasting new data.
      Then repeat over and over. Have a large amount of data to go through. And the current way id very time consuming.

      PeterJonesP Alan KilbornA 2 Replies Last reply Reply Quote 0
      • PeterJonesP
        PeterJones @Bill Holder
        last edited by PeterJones

        @Bill-Holder ,

        Could you give us a “before” and “after”, using the </> button to format the text like:

        before
        

        and

        after
        

        … and have the example have a few rows that will be replaced and a few that won’t.

        I need to do this with other dates

        Also, please make it more clear whether the other dates need to be handled in the same regex, and whether they will be replaced with the same text or different text depending on date (if the only thing different between the replacements is that it will be 2 TYPE #### US Federal Census, the #### can easily be grabbed by the FIND regex and placed in the replace; if it’s more complicated than that, you’ll have to give more detail.)

        ----

        Do you want regex search/replace help? Then please be patient and polite, show some effort, and be willing to learn; answer questions and requests for clarification that are made of you. All example text should be marked as literal text using the </> toolbar button or manual Markdown syntax. To make regex in red (and so they keep their special characters like *), use backticks, like `^.*?blah.*?\z`. Screenshots can be pasted from the clipboard to your post using Ctrl+V to show graphical items, but any text should be included as literal text in your post so we can easily copy/paste your data. Show the data you have and the text you want to get from that data; include examples of things that should match and be transformed, and things that don’t match and should be left alone; show edge cases and make sure you examples are as varied as your real data. Show the regex you already tried, and why you thought it should work; tell us what’s wrong with what you do get. Read the official NPP Searching / Regex docs and the forum’s Regular Expression FAQ. If you follow these guidelines, you’re much more likely to get helpful replies that solve your problem in the shortest number of tries.

        1 Reply Last reply Reply Quote 1
        • Alan KilbornA
          Alan Kilborn @Bill Holder
          last edited by

          @Bill-Holder said in Find One Line of Text, Then Backup the next Line Above & paste:

          I want to find 2 DATE 1920
          Then the next line it must equal 1 RESI Like shown below.
          1 RESI
          2 DATE 1920

          Bad information right out of the box. :-(
          This one might take more effort to extract the real problem than to arrive at a solution.
          Good luck, I’m moving on…

          1 Reply Last reply Reply Quote 0
          • Bill HolderB
            Bill Holder
            last edited by

            First I copy in the following two lines:
            1 EVEN
            2 TYPE 1940 US Federal Census

            Search for 2 DATE 1940 and finding it. Next look t the line of datadirectly above it if reads only 1 RESI the do a copy and replace on 1 RESI after making the changes, and continue searching until all of that criteria is met.

            On to the next year, 1935, Copy the next two lines
            1 EVEN
            2 TYPE 1935 US Federal Census

            Then start again with 2 DATE 1935 and repeat again. When there are no more searches for 2 DATE 1935 with the line above containing only this 1 RESI, then start with another date.

            So when done there should not be any more lines like this:
            1 RESI
            2 DATE xxxx
            (No 4 Digits by itself.)

            There will be other 1 RESI date containing addded information like:
            1 RESI 233 E. Young
            2 DATE 23 Apr 1940

            The 2 DATE line must contain only 4 digits

            Yes, the date of 1920 will possibliy change starting from 1750 to 1940, (every 10 years, as when the census was taken throughout the US in many, many areas) also it will include the year 1935.
            But the “US Federal Census” will not change.
            When finished, start over with a new year, amd repeat again. This occours for each year.

            This one file has a total of 74,714 lines of data in it.
            Another file, has 8,741,009 lines of data in it. These are just two of the many files that I am currently on.

            Here is the real data for just one person:
            0 @I115@ INDI
            1 NAME M. /W./
            2 GIVN M.
            2 SURN W.
            2 SOUR @S4@
            3 PAGE accessed 24 Feb 2021), entry for M. W.
            4 CONC person ID.
            3 QUAY 3
            1 SEX F
            1 BIRT
            2 DATE 16 Nov 1919
            2 PLAC , , Maine
            2 SOUR @S4@
            3 PAGE accessed 24 Feb 2021), entry for M. W.
            4 CONC person ID.
            3 QUAY 3
            1 DEAT
            2 DATE 7 Jan 1941
            2 SOUR @S4@
            3 PAGE accessed 24 Feb 2021), entry for M. W.
            4 CONC person ID.
            3 QUAY 3
            1 _PPEXCLUDE
            1 RESI
            2 DATE 1920
            2 PLAC , Cabell, West Virginia
            2 SOUR @S4@
            3 PAGE accessed 24 Feb 2021), entry for M. W.
            4 CONC person ID.
            3 QUAY 3
            3 NOTE ;Contributor:
            4 CONT
            1 RESI
            2 DATE 1930
            2 PLAC , Cabell, West Virginia
            2 SOUR @S4@
            3 PAGE accessed 24 Feb 2021), entry for M. W.
            4 CONC person ID.
            3 QUAY 3
            3 NOTE ;Contributor:
            4 CONT
            1 RESI
            2 DATE 1935
            2 PLAC Same Place
            2 SOUR @S4@
            3 PAGE accessed 24 Feb 2021), entry for M. W.
            4 CONC person ID.
            3 QUAY 3
            3 NOTE ;Contributor:
            4 CONT
            1 RESI
            2 DATE 1940
            2 PLAC , Cabell, West Virginia
            2 SOUR @S4@
            3 PAGE accessed 24 Feb 2021), entry for M. W.
            4 CONC person ID.
            3 QUAY 3
            3 NOTE ;Contributor:
            4 CONT
            1 _UID CD36422AB4882352D252C531182769341666
            1 _FSFTID GMXQ-YHF
            1 _FSLINK
            1 CHAN
            2 DATE 24 Feb 2021
            3 TIME 23:56
            1 FAMS @F48@
            1 FAMC @F480@

            Please have a little care for I am 74 year of age, amd still learning.
            Thanks
            Bill

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

              Hello, @bill-holder a,d All,

              Ah… OK ! So, I think that this following regex S/R should work :

              SEARCH (?-i)1 RESI\R2 DATE (\d{4})$

              REPLACE 1 EVEN\r\n2 TYPE \1 US Federal Census


              • Open your file in N++

              • Open the Replace dialog ( Ctrl + H )

                • SEARCH (?-i)1 RESI\R2 DATE (\d{4})$

                • REPLACE 1 EVEN\r\n2 TYPE \1 US Federal Census

                • Tick the Wrap around option

                • Select the Regular expression search mode

                • Click on the Replace All button

              • Close the Replace dilaog ( Esc )

              Et voilà !


              Notes :

              • First, the (?-i) modifier forces the search to be sensitive to letter case

              • Then, the regex engine looks for the string 1 RESI, with this exact case, followed with line-ending characters \R, itself followed with the next line : the string DATE, with that exact case, followed with a space char and a four digits number \d{4}, which ends the line => $

              • As the four digits number is surrounded between brackets (....), it is stored as group 1

              • In replacement, we rewrite the line 1 EVEN , followed with line-ending characters \r\n, itself followed with a next line : the string TYPE, followed with a space char, the contents as group 1 ( \1 ), an other space char and, finally, the string US Federal Census


              In your sample text, we get 4 occurrences and replacements :

              .....
              .....
              1 RESI            ==>      1 EVEN
              2 DATE 1920       ==>      2 TYPE 1920 US Federal Census
              .....
              .....
              1 RESI            ==>      1 EVEN
              2 DATE 1930       ==>      2 TYPE 1930 US Federal Census
              .....
              .....
              1 RESI            ==>      1 EVEN
              2 DATE 1935       ==>      2 TYPE 1935 US Federal Census
              .....
              .....
              1 RESI            ==>      1 EVEN
              2 DATE 1940       ==>      2 TYPE 1940 US Federal Census
              .....
              .....
              

              Best Regards,

              guy038

              1 Reply Last reply Reply Quote 1
              • Bill HolderB
                Bill Holder
                last edited by

                Thanks for all the hard work. It seems to be working, just a few minor glitches. But they are probably on my end. Will let you know more as to what I find later on.
                Again, Thanks A Lot
                Bill

                1 Reply Last reply Reply Quote 1
                • First post
                  Last post
                The Community of users of the Notepad++ text editor.
                Powered by NodeBB | Contributors