![]() |
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| Welcome to Windows Vista Forums. Our forum is dedicated to helping you find solutions with any problems, errors or issues you are experiencing with Windows Vista. The Vista forum also covers news and updates and has an extensive Windows Vista tutorial section that covers a wide range of tips and tricks. |
| |||||||
![]() |
| |
| | #1 (permalink) |
| | do something for each token in a line separated by comma Hello, a simple problem in NT-Shell, but in Powershell i find no solution (newin PS) I have a Textfile where in each line are members of a group. These members are separated by a comma. I find no way to do something with each user. I have tried something with get-content and foreach-object. But everything interprets the wohle line as 1 string. If i take a textfile with each user in one line, theres no problem to handle with. heres a exampel for the textfile: mary,john,paul,henry mary,john mary,john,paul,henry,george,hanne,anne,tom i want to read each line and in each line do something with each user separated with comma. The number of users in each line varies. Pls give me some hints. Thx and Greets Max |
My System Specs![]() |
| | #2 (permalink) |
| | Re: do something for each token in a line separated by comma Hi MaxMed, You can split method, on the comma char, on each line and then run foreach on the result: get-content yourfile.txt | foreach { $users = $_.split(",") $users | foreach { "do somthing" } } ----- Shay Levi $cript Fanatic http://scriptolog.blogspot.com Hebrew weblog: http://blogs.microsoft.co.il/blogs/scriptfanatic Quote: > Hello, > > a simple problem in NT-Shell, but in Powershell i find no solution ![]() > (new in PS) > > I have a Textfile where in each line are members of a group. These > members > are separated by a comma. I find no way to do something with each > user. > I have tried something with get-content and foreach-object. > But everything interprets the wohle line as 1 string. > If i take a textfile with each user in one line, theres no problem to > handle > with. > heres a exampel for the textfile: > > mary,john,paul,henry > mary,john > mary,john,paul,henry,george,hanne,anne,tom > i want to read each line and in each line do something with each user > separated with comma. The number of users in each line varies. > > Pls give me some hints. > > Thx and Greets > Max |
My System Specs![]() |
| | #3 (permalink) |
| | Re: do something for each token in a line separated by comma Hi Shay Levi :-) Thanks a lot! It works!! One more Problem: Is there a posibility to remove spaces in each token? Greets MaxMad "Shay Levi" wrote: Quote: > > Hi MaxMed, > > You can split method, on the comma char, on each line and then run foreach > on the result: > > get-content yourfile.txt | foreach { > $users = $_.split(",") > $users | foreach { "do somthing" } > } > > > > ----- > Shay Levi > $cript Fanatic > http://scriptolog.blogspot.com > Hebrew weblog: http://blogs.microsoft.co.il/blogs/scriptfanatic > > > Quote: > > Hello, > > > > a simple problem in NT-Shell, but in Powershell i find no solution ![]() > > (new in PS) > > > > I have a Textfile where in each line are members of a group. These > > members > > are separated by a comma. I find no way to do something with each > > user. > > I have tried something with get-content and foreach-object. > > But everything interprets the wohle line as 1 string. > > If i take a textfile with each user in one line, theres no problem to > > handle > > with. > > heres a exampel for the textfile: > > > > mary,john,paul,henry > > mary,john > > mary,john,paul,henry,george,hanne,anne,tom > > i want to read each line and in each line do something with each user > > separated with comma. The number of users in each line varies. > > > > Pls give me some hints. > > > > Thx and Greets > > Max > > |
My System Specs![]() |
| | #4 (permalink) |
| | Re: do something for each token in a line separated by comma The string type has three methods to trim white space characters (or set of characters) from a string, you can get them by running: PS > " just a string " | gm tr* TypeName: System.String Name MemberType Definition ---- ---------- ---------- Trim Method System.String Trim(Params Char[] trimChars), System.String Trim() TrimEnd Method System.String TrimEnd(Params Char[] trimChars) TrimStart Method System.String TrimStart(Params Char[] trimChars) Trim - Removes all trailing occurrences of a set of characters specified in an array from the current String object. TrimEnd - Removes all trailing occurrences of a set of characters specified in an array from the current String object. TrimStart - Removes all leading occurrences of a set of characters specified in an array from the current String object. # remove leading and trailing spaces from a string PS > " just a string ".trim() just a string ----- Shay Levi $cript Fanatic http://scriptolog.blogspot.com Hebrew weblog: http://blogs.microsoft.co.il/blogs/scriptfanatic Quote: > Hi Shay Levi :-) > > Thanks a lot! It works!! One more Problem: Is there a posibility to > remove spaces in each token? > > Greets > MaxMad > "Shay Levi" wrote: > Quote: >> Hi MaxMed, >> >> You can split method, on the comma char, on each line and then run >> foreach on the result: >> >> get-content yourfile.txt | foreach { >> $users = $_.split(",") >> $users | foreach { "do somthing" } >> } >> ----- >> Shay Levi >> $cript Fanatic >> http://scriptolog.blogspot.com >> Hebrew weblog: http://blogs.microsoft.co.il/blogs/scriptfanatic Quote: >>> Hello, >>> >>> a simple problem in NT-Shell, but in Powershell i find no solution >>> (new in PS)>>> >>> I have a Textfile where in each line are members of a group. These >>> members >>> are separated by a comma. I find no way to do something with each >>> user. >>> I have tried something with get-content and foreach-object. >>> But everything interprets the wohle line as 1 string. >>> If i take a textfile with each user in one line, theres no problem >>> to >>> handle >>> with. >>> heres a exampel for the textfile: >>> mary,john,paul,henry >>> mary,john >>> mary,john,paul,henry,george,hanne,anne,tom >>> i want to read each line and in each line do something with each >>> user >>> separated with comma. The number of users in each line varies. >>> Pls give me some hints. >>> >>> Thx and Greets >>> Max |
My System Specs![]() |
| | #5 (permalink) |
| Vista Business 32bit | Re: do something for each token in a line separated by comma Hello, I have a very similar issue that is fairly straight forward with a batch file, but I would like to learn a simpler cleaner version with Powershell. We have text files that look like this - johndoe@abccompany.com,janedoe@abcco...abccompany.com, etc. all on one line of text. We want to just strip out the username (everything before the @ symbol) and nothing more then put them into a new text file 1 per line. (or to excel, since Powershell can do this) The problem that I have been encountering is that when I try something like this - $a = Get-Content ("\\network location\long_names.txt") $b = $a.split('@') I get a result that looks like this - johndoe abccompany.com,janedoe abccompany.com,xyzuser abccompany.com,somebody etc. Is there a way to only get the username and put it into new file with one username per line? I am very new to PowerShell but am starting a 20 hour course, so hopefully I'll know more soon. Any help would be appreciated. We have already accomplished this with a batch file that we wrote up in 30 mins or so, but it would be nice to see these real world examples able to be accomplished with Powershell. Thanks! |
My System Specs![]() |
| | #6 (permalink) |
| | Re: do something for each token in a line separated by comma $s = "johndoe@xxxxxx,janedoe@xxxxxx,xyzuser@xxxxxx,somebody@xxxxxx," [regex]::matches($s,',?(?<name>[^@]+)@[^\.]+\.\w+') | foreach { $_.groups['name'].value } johndoe janedoe xyzuser somebody To process a file: get-content <file> | foreach { [regex]::matches($_, ',?(?<name>[^@]+)@[^\.]+\.\w+') | foreach { $_.groups['name'].value } } ----- Shay Levi $cript Fanatic http://scriptolog.blogspot.com Hebrew weblog: http://blogs.microsoft.co.il/blogs/scriptfanatic Quote: > Hello, > > I have a very similar issue that is fairly straight forward with a > batch file, but I would like to learn a simpler cleaner version with > Powershell. > > We have text files that look like this - > > johndoe@xxxxxx,janedoe@xxxxxx,xyzuser@xxxxxx,s > omebody@xxxxxx, > > etc. > > all on one line of text. We want to just strip out the username > (everything before the @ symbol) and nothing more then put them into a > new text file 1 per line. (or to excel, since Powershell can do this) > The problem that I have been encountering is that when I try something > like this - > > $a = Get-Content ("\\network location\long_names.txt") $b = > $a.split('@') > > I get a result that looks like this - > > johndoe > abccompany.com,janedoe > abccompany.com,xyzuser > abccompany.com,somebody > etc. > > Is there a way to only get the username and put it into new file with > one username per line? > > I am very new to PowerShell but am starting a 20 hour course, so > hopefully I'll know more soon. Any help would be appreciated. We > have already accomplished this with a batch file that we wrote up in > 30 mins or so, but it would be nice to see these real world examples > able to be accomplished with Powershell. > > Thanks! > |
My System Specs![]() |
![]() |
| Thread Tools | |
| |
Similar Threads | ||||
| Thread | Forum | |||
| Re: Leading comma operator - What does it do, really? | PowerShell | |||
| Convert CSV semi-colone to comma separated | PowerShell | |||
| end of line while processing a string token issue | PowerShell | |||
| Argument that starts with '-' and contains ':' gets separated. | PowerShell | |||
| Encountered end of line while processing a string token | PowerShell | |||