• Login
Community
  • Login

Find in Files two phrases

Scheduled Pinned Locked Moved Help wanted · · · – – – · · ·
8 Posts 2 Posters 335 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.
  • S
    Scott Wallace
    last edited by Jul 14, 2020, 3:19 PM

    I have a Year month directory structure and need to use “find all files”
    I’m looking to find all files that contain the phrases “Material Transfer Number” and “Posting Date”
    The results must contain both phrases.

    A 1 Reply Last reply Jul 14, 2020, 3:36 PM Reply Quote 0
    • A
      Alan Kilborn @Scott Wallace
      last edited by Jul 14, 2020, 3:36 PM

      @Scott-Wallace

      You can do a regular expression search of this type:

      (?-s)(?=.*phrase1)(?=.*phrase2).*

      1 Reply Last reply Reply Quote 2
      • S
        Scott Wallace
        last edited by Jul 14, 2020, 3:58 PM

        (?-s)(?=.*Material Transfer Number)(?=.Posting Date). in a folder where I know there are over 700 results I got back 15 hits that didn’t contain either phrase ??

        A 1 Reply Last reply Jul 14, 2020, 4:02 PM Reply Quote 0
        • A
          Alan Kilborn @Scott Wallace
          last edited by Jul 14, 2020, 4:02 PM

          @Scott-Wallace

          Ah, sorry, I thought for some reason that the phrases need to occur on the same line.

          Change the (?-s) part to (?s) – will allow matching to span lines.

          Note that this only helps you find which files contain the data, not the specific area in the file where the data is located.

          A S 2 Replies Last reply Jul 14, 2020, 4:10 PM Reply Quote 1
          • A
            Alan Kilborn @Alan Kilborn
            last edited by Alan Kilborn Jul 14, 2020, 4:12 PM Jul 14, 2020, 4:10 PM

            @Scott-Wallace

            If you actually want the data matches to be shown, you could do this:

            (?s)phrase1.*?phrase2

            but you’d also have to do a second search to cover the possibility of phrase2 occurring before phrase1:

            (?s)phrase2.*?phrase1

            1 Reply Last reply Reply Quote 2
            • S
              Scott Wallace @Alan Kilborn
              last edited by Jul 14, 2020, 6:30 PM

              @Alan-Kilborn
              First thank you for your help.
              So if I do just a plain Find in files search for “Material Transfer Number” I will get 765 hits.
              When the phrase appears in a file it would only appear a single time.
              When I search for Posting Date I get 1200 hits as that phrase in used in multiple XML files
              When I use (?s)(?=.*Material Transfer Number)(?=.Posting Date) it is extremely extremely slow and I get 785 hits
              Again Posting Date would only appear a single time in a file that has Material Transfer Numbers in it as well,so something is off with my results.

              Here is a more complete explanation. I have a folder structure of XMLs. I’m only interested in the XML files that contain the phrase Material Transfer Number. Within those files what I’m interested in is the value set for posting date.
              My attempt was to use a Find in Files for files that contain both phrases and for the results section to display the Posting Date line. Below is a sample
              <import>
              <node type=“document” action=“sync”>
              <location>Enteprise:Finance:Accounting:Material Transfers</location>
              <file>\Alpha1\oi-working$\filedrop\MTs\0000026.pdf</file>
              <title>0000026.pdf</title>
              <createby>svc.grooper</createby>
              <category name=“Content Server Categories:Material Transfer Packages”>
              <attribute name=“Material Transfer Number”>0000026</attribute>
              <attribute name=“Posting Date”>20191201</attribute>

              <attribute name=“Status”>Business Reference Not Created</attribute>
              <attribute name=“Material Number”>400020</attribute>
              <attribute name=“Equipment Number”>000000000010112769</attribute>
              </category>
              </node>
              </import>

              The order of the two phrases is always the same, but of course the value assigned always changes
              I’ve since tried your other suggestion
              (?s)Material Transfer Number.*?Posting Date
              But the above showed zero results.

              A 1 Reply Last reply Jul 14, 2020, 6:47 PM Reply Quote 1
              • A
                Alan Kilborn @Scott Wallace
                last edited by Alan Kilborn Jul 14, 2020, 6:50 PM Jul 14, 2020, 6:47 PM

                @Scott-Wallace said in Find in Files two phrases:

                But the above showed zero results.

                Hmm, not sure.
                Here’s the result of my try at it:
                d2b3e743-1d34-491a-b1be-41a476836f0f-image.png
                Double-clicking the Line 8 result in the Find result window jumps the input focus into the main window to select all text beginning with Material and ending with Date.

                …results section to display the Posting Date line

                Ah, well for that you’d need to do it a bit differently as in my screenshot above Posting Date is not visible directly in the results, only when you double-click on a specific line in the results.
                The reason for this is that in the results, only the first line of a multiline result is shown.

                For that I would try this variation (?s)Material Transfer Number.*?\KPosting Date to obtain this where it IS visible in the results:

                32b596ce-6f52-4442-b962-85d7aaed5446-image.png

                The \K makes the posting date be the line that is shown in the results.

                When I use (?s)(?=.*Material Transfer Number)(?=.Posting Date) it is extremely extremely slow and I get 785 hits

                Again Posting Date would only appear a single time in a file that has Material Transfer Numbers in it as well,so something is off with my results.

                Hmm, not sure what is going wrong for you. “Extremely slow…” -> could be, depending upon size of the files.

                1 Reply Last reply Reply Quote 1
                • S
                  Scott Wallace
                  last edited by Jul 15, 2020, 9:07 PM

                  @Alan-Kilborn said in Find in Files two phrases:

                  (?s)Material Transfer Number.*?\KPosting Date

                  Alan, the issues were typos on my side. The (?s)Material Transfer Number.*?\KPosting Date gave me exactly what I needed.
                  Thank you so much for all your help.

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