Удалить в журнале столбец, который меняет положение в строке, Powershell - PullRequest
0 голосов
/ 20 февраля 2020

У меня есть файл журнала, и я хочу избавиться от третьего столбца, который начинается с «внешнего», этот столбец не всегда находится на третьем месте, поэтому мне нужно найти слово «внешний», а затем удалить его с помощью строка, которая следует за двоеточием.

Я думал об использовании -replace для этого, но принимает ли "-replace" некоторое регулярное выражение для удаления остальной части строки (после точки с запятой), которая всегда меняется?

или, может быть, есть лучший способ сделать это?

02/02/2020  name:VAL_NATURE external:af2045b2-5992-432e-b790-c1ad4743038 status:good
cat mylog.log | %{$_ -replace "external???",""}

1 Ответ

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

Для любого файла с разделителями первая мысль, которую я имею, - это разбить его на разделители (в вашем случае, пробел) и обработать его как объект. Удаление столбца является тривиальным, если вы делаете это, и оно дает вам легкий доступ к данным для других целей.

Если, однако, ваша единственная задача - удалить этот столбец с помощью «external» + colon + all текст до следующего бита пробела, это легко сделать с заменой регулярного выражения.

$line = '02/02/2020  name:VAL_NATURE external:af2045b2-5992-432e-b790-c1ad4743038 status:good'
$line -replace 'external:.*\s',''

РЕДАКТИРОВАТЬ: Протестировал код выше и получил этот вывод:

02/02/2020  name:VAL_NATURE status:good

. - это любой символ, а .* говорит, что «любой символ ноль или более раз» продолжает совпадать, пока не попадет в пробел, который представлен \s. Таким образом, это регулярное выражение соответствует слову «external», за которым следует «:», за которым следуют ноль или более других символов, за которыми следует пробел (пробел / tab / et c).

Надеюсь, это поможет!

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...