Improve company productivity with a Business Account.Sign Up

x
?
Solved

Parse Text

Posted on 2011-03-17
5
Medium Priority
?
358 Views
Last Modified: 2012-05-11
I need to recursively parse all files in a folder and return the values that are present to the right of the text found within.

The text within is always the same:

ram Files\Queue\textfile.txt

I need to get a result set containing the:

file name searched
textfile.txt values within each found file

Thanks!
0
Comment
Question by:CodexK2
  • 2
  • 2
5 Comments
 
LVL 13

Expert Comment

by:soostibi
ID: 35160412
Could you describe your problem more precisely? With some examples.
0
 
LVL 13

Expert Comment

by:Felix Leven
ID: 35161234
find different filetypes example:
Get-ChildItem C:\PSTest\ -Recurse -include *.txt, *.exe, *.ini

Read file:
get-content textfile.txt
0
 

Author Comment

by:CodexK2
ID: 35162856
Thank you - I know how to recursively look for files within a folder (and search for strings within these files).

What I need help with is searching within each and every file within a given folder for this text:

Files\Queue\textfile.txt

...and then only returning the value found to the right of 'Files\Queue'

So...in the example above the value returned would be:

'textfile.txt'

Ideally the result set will output the name of the file and the values found.


0
 
LVL 13

Accepted Solution

by:
soostibi earned 2000 total points
ID: 35163769
Try this. You can adjust the pattaren in the first line and the place of the text files to search in the 3rd line.

This will result in a table like this (it even gives you the line number within the text file):
linenumber filename      patternfound            
---------- --------      ------------            
         1 parsetext.txt textfile1.txt            
         2 parsetext.txt textfile2.txt            
         1 pars2text.txt subfolder\textfilesub.txt

In my example the 3rd match shows, that it gives you the subfolder path. If you do not need that, only the filenname, tell me, I'll adjust the code.
$pattern = "Files\\Queue\\([^\.]+\.txt)"

Get-ChildItem c:\yourpathtotxtfiles -Recurse -Filter *.txt | Select-String -Pattern $pattern | %{
    $filename = $_.filename
    $linenumber = $_.linenumber
    $_.matches | %{
        new-object -TypeName PSObject -Property @{
            filename = $filename
            patternfound = $_.groups[1].value
            linenumber = $linenumber
        }
    }
}

Open in new window

0
 

Author Closing Comment

by:CodexK2
ID: 35172405
Works like a Champ - thank you very much!!
0

Featured Post

Simplify Active Directory Administration

Administration of Active Directory does not have to be hard.  Too often what should be a simple task is made more difficult than it needs to be.The solution?  Hyena from SystemTools Software.  With ease-of-use as well as powerful importing and bulk updating capabilities.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

You have missed a phone call. The number looks like it belongs to the bunch of numbers which your company uses. How to find out who has just called you?
In a Cross Forest, the steps to migrate users are quite complicated and even in the official articles of Technet there is no clear recommendation on which approach to take .. From an experience, I mention and simplify which way to go and how to use …
Exchange organizations may use the Journaling Agent of the Transport Service to archive messages going through Exchange. However, if the Transport Service is integrated with some email content management application (such as an antispam), the admini…
Did you know PowerShell can save you time with SaaS platforms? Simply leverage RESTfulAPIs to build your own PowerShell modules. These will kill repetitive tickets and tabs, using the command Invoke-RestMethod. Tune into this webinar to learn how…

588 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question