Below is a simple way of adding or inserting a new line in
PowerShell.
This code snippet below, will insert a new line on a
specific line number.
The code uses a simple regex to match a pattern.
The new line will be inserted right after the line where the
pattern matches.
If the pattern match at line number 3, the new line will be
inserted on line number 4.
To test this code, write this strings below to a text file
and save it to d drive with the file name "test123.txt".
If you want to try using other file name and other drive
location; just change the drive or the file name to anything. But the script
has to be updated also.
File Test123.Txt contains this data:
# My file test123.txt for testing only
# Line1
# Line2
Line3
Line-4x
Line 5z
Line No. 6p
Line Number 7xx
Example below, will search for "Line3" and insert
this string "new xx inserted line".
After running the script Test123.Txt will have this data:
# My file test123.txt for testing only
# Line1
# Line2
Line3
new xx inserted line
Line-4x
Line 5z
Line No. 6p
Line Number 7xx
Here's the script:
===================================
$pathToFile = "d:\test123.txt"
$getTxtLines = Get-Content $pathToFile
#Find the string to match
#Line after the match string, insert the new string
$stringMatch = "Line3"
#will contain the matched line number
$getStringposNumber = [array]::indexof($getTxtLines,
$getTxtLines -match $stringMatch)
#Add 1 to the matched line number
#Add 1 so the new line to be inserted is below the matched
string
$xpos = $getStringposNumber +1
#save the match string to a variable
$xsave = $getTxtLines[$getStringposNumber]
#Insert new lines
$getTxtLines[$getStringposNumber]="`n`r"
$getTxtLines[$getStringposNumber]=[Environment]::NewLine
#save the text files with the new lines
$getTxtLines | out-file $pathToFile
#Open again the text file with the new index array numbers
$getTxtLines = Get-Content $pathToFile
$getStringposNumber = [array]::indexof($getTxtLines,
$getTxtLines -match $stringMatch)
#put back the save data
$getTxtLines[$getStringposNumber]="$xsave"
#insert the new string to the newly added line
$getTxtLines[$xpos]="new xx inserted line"
#finally save the file again (the final output)
$getTxtLines | out-file $pathToFile
===================================
That's it a very simple way and easy to follow PowerShell
code on inserting lines to a text file after a specific line.
Cheers!!!Hope it helps..
Check out labels below.. for other PowerShell code
snippets..
================================
Free Android App with No Ads.
Heaven's Dew Fall
https://play.google.com/store/apps/details?id=soulrefresh.beautiful.prayer
================================
Free Android App with No Ads.
Heaven's Dew Fall
https://play.google.com/store/apps/details?id=soulrefresh.beautiful.prayer
Catholic Rosary Guide for Android:
Pray the Rosary every day, countless blessings will be showered upon your life if you recite the Rosary faithfully.
https://play.google.com/store/apps/details?id=com.myrosaryapp
https://play.google.com/store/apps/details?id=com.myrosaryapp
http://quickbytesstuff.blogspot.sg/2014/09/how-to-recite-rosary.html
Hi!
ReplyDeleteVery good article.
I analized and apply with some changes in my work.
$path = "e:\data\file_data.txt";
$myNewTextLine = "MY WORDS";
$stringMatch = '16\. ';
$contentFile = Get-Content -Path $path;
$numLine = (Select-String -Path $path -Pattern $stringMatch).LineNumber;
$saveLine = $contentFile[$numLine];
$contentFile[$numLine] = $myNewTextLine + [Environment]::NewLine + $saveLine
$contentFile | out-file $path
A hope it helps too!
Regards.