Powershell Удалить только первое слово строки - PullRequest
0 голосов
/ 22 октября 2018

Мой текстовый файл имеет содержимое ниже:

author   : abc  
Revision : 123  
Date     : 9/4/2018 11.15.50 AM  
Path     : testabc  
Message  : Req ID:abcd1234  
           Rev:1.0.0  
           Status:something   
           Notes:somethingabc  
Path : D:\temp

Я хочу, чтобы содержимое отображалось ниже:

author   : abc  
Revision : 123  
Date     : 9/4/2018 11.15.50 AM  
Path     : testabc  
Req ID:abcd1234  
Rev:1.0.0  
Status:something   
Notes:somethingabc  
Path : D:\temp

Мне нужно удалить только слово «Сообщение:» (в 5-й строке) и удалите пробелы для следующих трех строк.

Я пробовал ниже:

$content = Get-Content "D:\test.txt"
$content | Foreach {$_.TrimStart('Message  : ')} |  Foreach {$_.TrimStart()} | Set-Content "D:\test.txt"

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

Самый простой способ IMO - это оператор -Replace на основе RegEx.

(Get-Content .\test.txt ) -replace "^(Message\s+:\s+|\s+)"

См. Здесь работу RegEx с объяснением

Якоря RE в строкеbegin ^ и имеет альтернативный , который соответствует либо

  • Message\s+:\s+ литеральному сообщению, за которым следует хотя бы один пробел, двоеточие и хотя бы один пробел
    Или |

  • только пробелы или, точнее, любой символ пробела (равный [\r\n\t\f\v ])

И заменяет их ничем ,"" который не должен быть выражен, но подразумевается.

0 голосов
/ 22 октября 2018

Вы можете использовать оператор -replace, например:

$lines = Get-Content "D:\test.txt"
$lines -replace "Message  : " -replace "^\s+" | Set-Content "D:\test.txt"

Примечания:

  • -replace "A","B" заменяет A на B.Если вы опустите B, он фактически удалит A (т.е. заменит его ничем).
  • -replace может быть связан
  • -replace работает с регулярными выражениями, ^\s+означает «несколько пробелов в начале строки»
  • Многие операторы Powershell могут работать с массивами.Здесь нет необходимости использовать ForEach - Get-Content дает вам массив строк, -replace запускается для каждой строки.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...