Удалить строку в файле powershell - PullRequest
0 голосов
/ 14 февраля 2020

У меня есть файл со следующими строками

Servicetag 
P4M8K82 
P4M8l582  
O5M8K82  

У меня будет sh У меня были только серийные номера, а не имя ServiceTag. Я хотел бы: просмотреть файл .csv, если строка содержит SerivceTag, то вы не получите значение и скопировать остальные.

В результате у меня было sh У меня было:

P4M8K82 
P4M8l582  
O5M8K82 

Как вы думаете, это возможно?

Ответы [ 3 ]

1 голос
/ 14 февраля 2020

Поскольку это заголовок CSV, вы можете просто пропустить первую строку:

#demo file
@"
Servicetag 
P4M8K82 
P4M8l582  
O5M8K82  
"@ | out-file Test.csv

#solution to get items
cat test.csv | select -Skip 1

#or write them to file
cat test.csv | select -Skip 1 | Out-file output.txt
0 голосов
/ 14 февраля 2020

Ваш входной файл выглядит как файл CSV только с одним полем. Когда есть только одно поле, разделительные запятые отсутствуют. Servicetag не является вводом данных. Это имя поля, также называемое заголовком.

Попробуйте следующее:

Import-Csv Test.csv | Format-Table

В результате получается таблица с одним заголовком столбца. Если вы делаете что-то вроде:

$testdata = Import-Csv Test.csv

, теперь ваши данные импортируются в форме, пригодной для обработки.

0 голосов
/ 14 февраля 2020

Хотя не совсем понятно, о чем вы спрашиваете, строка ниже будет считывать файл как строковый массив и записывать новый файл с удалением всех строк, содержащих 'ServiceTag':

Get-Content -Path 'TheOriginalFile'| Where-Object { $_ -notmatch 'ServiceTag' } | Set-Content -Path 'TheNewFile'
...