Ответ 1
Побег | символ с использованием обратного хода
get-content c:\new\temp_*.txt | select-string -pattern 'H`|159' -notmatch | Out-File c:\new\newfile.txt
Я пытаюсь удалить все строки из текстового файла, который содержит частичную строку, используя следующий код PowerShell:
Get-Content C:\new\temp_*.txt | Select-String -pattern "H|159" -notmatch | Out-File C:\new\newfile.txt
Фактическая строка H|159|28-05-2005|508|xxx
, она повторяется в файле несколько раз, и я пытаюсь совместить только первую часть, как указано выше. Это верно? В настоящее время я получаю пустой вывод.
Я что-то пропустил?
Побег | символ с использованием обратного хода
get-content c:\new\temp_*.txt | select-string -pattern 'H`|159' -notmatch | Out-File c:\new\newfile.txt
Характер трубы |
имеет особое значение в регулярных выражениях. a|b
означает "соответствует либо a
, либо b
". Если вы хотите совместить буквенный символ |
, вам нужно его избежать:
... | Select-String -Pattern 'H\|159' -NotMatch | ...
Предположим, что вы хотите записать это в том же файле, вы можете сделать следующее:
Set-Content -Path "C:\temp\Newtext.txt" -Value (get-content -Path "c:\Temp\Newtext.txt" | Select-String -Pattern 'H\|159' -NotMatch)