Вы можете использовать следующее регулярное выражение для достижения своих результатов:
^Duty Officer: ([\w ]+)$
Объяснение вышеуказанного регулярного выражения:
^
- представляет начало данной тестовой строки.
([\w ]+)
- представляет захват. Соответствие любого символа слова ([0-9A-Za-z_]
) вместе с пробелом (поскольку имена могут содержать пробелы) один или несколько раз.
$
- обозначает конец данной тестовой строки.
Вы можете здесь можно найти демонстрацию приведенного выше регулярного выражения .
КОМАНДЫ POWERSHELL: (Вы можете изменить команды в соответствии с вашими потребностями)
PS C:\Path\To\MyDesktop> $input_path='C:\Path\To\MyDesktop\test.txt'
PS C:\Path\To\MyDesktop> $output_path='C:\Path\To\MyDesktop\testResult.txt'
PS C:\Path\To\MyDesktop> $regex='^Duty Officer: ([\w ]+)$'
PS C:\Path\To\MyDesktop> select-string -Path $input_path -Pattern $regex -AllMatches | % { $_.Matches.groups[1] } | % { $_.Value } > $output_file
Приведенный выше результат принимает ввод, который вы предоставили через файл test.txt , и печатает желаемый результат в файле testResult.txt . Обратите внимание на команду select-string
для захвата только группы 1. Я использовал $_.Matches.groups[1]
.
Для лучшего понимания команд, использованных выше; см. здесь.