0
votes

You can try this:

function setConfig( $file) {
    $content = Get-Content $file
    $content -remove '$content[1..14]'
    Set-Content $file     
}

I want to make a function through which I can pass through files so that it deletes specific lines or bunch of lines

1
It would be cleaner if you actually asked a question. Are you asking for the meaning of the error message, how to correct that error message, or how to change the code to make it do what you want? All of those possibilities have different answers, and require you to provide different amounts of information for context. - Rob

1 Answers

1
votes

I don't recall -remove being a PowerShell operator and I should think the error you would be getting to be:

Unexpected token '-remove' in expression or statement.

Also you are preventing PowerShell from expanding the code in single quotes so it is therefore being treated as the literal string "$content[1..14]".

I am going to take the liberty of assuming you are trying to remove the first 14ish lines of code from a file while keeping the first yes?

I create a test file that contains 30 lines using the following code.

1..30 | Set-Content C:\temp\30lines.txt

Then we use this updated version of your function

function setConfig($file){
    $content = Get-Content $file
    $content | Select-Object -Index (,0 + (14..$($content.Count))) | Set-Content $file     
}

Using the -Index of Select-Object we get the first line ,0 then add the remaining lines after the 14th (14..$($content.Count))). The comma is needed in from of the 0 since we went to combine two arrays of numbers. An updated file content would look like this. Change the -Index values to suit your needs.

1
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30