Удалить новую строку из файла - PullRequest
0 голосов
/ 27 апреля 2019

Я пытаюсь удалить строки, соответствующие детали, предоставленной мной с помощью приведенной ниже команды. Когда создается новый файл output.txt, он сопровождается новой строкой, которую я не хочу добавлять. Есть ли способ удалить его в той же команде, которую я вставил ниже.

a.txt имеет следующее содержание:

12345   asd 12-22-2009
23432   vfv 03-21-2019
23432   abcd    03-21-2019
38372   kcdsklfm    08-17-2011
Get-Content C:\test\a.txt |
    Select-String -Pattern '23432' -NotMatch |
    Out-File C:\test\output.txt

output.txt (ожидается):

12345   asd 12-22-2009
38372   kcdsklfm    08-17-2011

output.txt (актуально):


12345   asd 12-22-2009
38372   kcdsklfm    08-17-2011

output file screenshot

Ответы [ 2 ]

0 голосов
/ 28 апреля 2019

Вы также можете отказаться от использования Select-String и сделать:

Get-Content C:\test\a.txt | Where-Object {$_ -notmatch '23432'} | Out-File C:\test\output.txt -Force
0 голосов
/ 28 апреля 2019

Select-String не выводит строку (см., Например, здесь ). Вы получаете эту пустую строку, потому что MatchInfo объекты из `Select-String 'превращаются в строку при записи в выходной файл.

Чтобы избежать этого, раскройте свойство Line объектов MatchInfo перед записью вывода в файл:

Get-Content C:\test\a.txt |
    Select-String -Pattern '23432' -NotMatch |
    Select-Object -Expand Line |
    Out-File C:\test\output.txt
...