Split Text File on NewLine in PowerShell

Split text file on Newline in PowerShell

Using Get-Content Cmdlet

We can use multiple ways to split the specified text file into an array based on every new line. To practice those methods and commands, we will use the file.txt file having the following content. Of course, you can also create or use your text file.

Let’s continue learning the solutions below.

Use the Get-Content cmdlet to split a text file into an array based on every new line.

We used the Get-Content cmdlet to retrieve the content of a text file that we specified. Using this cmdlet is one of the most straightforward approaches because this, by default, returns every line of text as the string object. As a result, the PowerShell object’s collection becomes an array of the string object. So, we do not have to split it; it is already done by the Get-Content cmdlet, which we saved in the $lines variable.

We used the -Path parameter to specify the item’s path where Get-Content will get the content. In our case, it is file.txt located in the current directory (represented with .); you can use the complete path of your file as well. Remember, the paths must point to items, not containers, which means we can mention a path to one or multiple files but not to a directory.

To ensure that we have successfully split the text file into an array based on each new line, we chained the GetType() method with the $lines variable. Yes, we have done it; as you can see, the BaseType is System.Array in the above output. We can print an item of a specific index as $lines[2]; note that the array indexes start with 0 and ends at n-1 where the n is the size of an array.

Now think if you have a specific requirement to read file.txt as a single string and then split them based on each new line, then you must use the -Raw parameter as demonstrated in the following example. You can find other useful parameters here.

We used the -Raw parameter to ignore newline characters and get the entire data of file.txt as one string with the newline characters preserved, which we saved in the $string variable. Next, we used the -Split operator with a newline as a separator (delimiter) to split the text file into an array based on every newline.

Similarly, we can also use the .Split() method as follows:

The -Split and .Split() are used to split a string into an array of substrings based on the given separator. In PowerShell, these are used interchangeably, but -Split is preferred because it is shorter and easy to type. However, if you are splitting the string based on complex and challenging delimiters, it is better to use the .Split() method.

The -Raw parameter will only work in file system drives.

Using System.IO.File.ReadAllLines Method

Use the System.IO.File.ReadAllLines() method to split a text file into an array based on every new line.

Here, we used the .ReadAllLines() method of the File class; it is also a one-line solution like the Get-Content cmdlet that we learned in the first example in this article. The .ReadAllLines() method took the complete path of the file.txt, read all the lines and returned them as a string array, which we saved in the $lines variable.

The good thing about the .ReadAllLines() method is that it also closes the file after reading all content, but you may have to face a few exceptions based on a few reasons that you find here.

That’s all about how to split text file on Newline in PowerShell.

Was this post helpful?

Leave a Reply

Your email address will not be published. Required fields are marked *