텍스트 파일에서 특정 문자열 찾기
저는 이 질문이 "신입자 질문"일 수도 있다는 것을 알지만, 아마도 제가 논리적인 실수를 했을 것입니다.
텍스트 파일이 있는데 문자열이 포함되어 있는지 검색하고 싶습니다.아래와 같이 시도해 보았지만 작동이 되지 않습니다.
$SEL = "Select-String -Path C:\Temp\File.txt -Pattern Test"
if ($SEL -eq $null)
{
echo Contains String
}
else
{
echo Not Contains String
}
저는 이것이 당신이 하려는 것이라고 생각합니다.
$SEL = Select-String -Path C:\Temp\File.txt -Pattern "Test"
if ($SEL -ne $null)
{
echo Contains String
}
else
{
echo Not Contains String
}
예에서는 다음과 같은 문자열을 정의하고 있습니다.$SEL그 다음에 그것이 다음과 같는지 확인합니다.$null(물론 항상 평가할 것입니다.false, 정의한 문자열이 그렇지 않기 때문입니다.$null!)
또한 파일에 패턴이 포함되어 있으면 다음과 같은 것이 반환됩니다.
C:\Temp\File.txt:1:Test
그러니까 꼭 당신의 것을 바꾸세요.-eq로.-ne아니면 당신의 것을 바꾸거나.if/else명령을 실행합니다. 왜냐하면 현재 반향 중이기 때문입니다.Contains String그 때에$SEL가$null, 거꾸로 된 거죠
SS64에 있는 모든 것에 대한 설명과 유용한 예를 확인합니다.PowerShell그리고.cmd
파일에 문자열이 있는지 확인하는 또 다른 방법은 다음과 같습니다.
If (Get-Content C:\Temp\File.txt | %{$_ -match "test"})
{
echo Contains String
}
else
{
echo Not Contains String
}
그러나 이것은 텍스트가 파일 내 어디에 존재하는지에 대한 표시를 해주지는 않습니다.이 메소드는 파일의 내용을 먼저 얻는다는 점에서도 다르게 작동합니다.Get-Content, 따라서 문자열의 존재 여부를 확인한 후 해당 내용에 대해 다른 작업을 수행해야 할 경우 유용할 수 있습니다.
따옴표 문자열을 이렇게 수정하고 regex search를 사용하지 않는 경우 simple match를 사용하여 boolean을 반환하고 모든 파일에서 검색하지 않는 경우(성능 향상)
if (Select-String -Path C:\Temp\File.txt -Pattern "test" -SimpleMatch -Quiet)
{
echo "Contains String"
}
else
{
echo "Not Contains String"
}
이런 문제가 있었지만, 문자열이 파일에 있는지 테스트하는 것만으로 더 빠른 해결책을 찾았습니다.
$SEL = get-content c:\temp\File.txt
if( $SEL -imatch "test" )
{
Write-Host 'Contains String'
}
else
{
Write-Host 'Does not contain String'
}
Measure-Command를 사용하여 1Mb 파일을 사용하여 23ms 만에 완료되었으며 선택 문자열은 44ms였습니다.따라서 테스트만 생각한다면, 이것이 더 빠릅니다.또한 텍스트가 들어 있는 줄을 반환하므로 도움이 될 수 있습니다.
아래 스크립트에서 원하는 작업을 수행합니다.
$SEL = Select-String -Path c:\temp\File.txt -Pattern test
if( $SEL.Length -gt 0 )
{
Write-Host 'Contains String'
}
else
{
Write-Host 'Does not contain String'
}
유어라인$SEL = "Select-String ..."실제로 선언합니다.$SEL문자열로서 - PowerShell이 실행하도록 지시하지 않습니다.Select-String.
언급URL : https://stackoverflow.com/questions/41871147/find-specific-string-in-textfile
'programing' 카테고리의 다른 글
| 장인 마이그레이션 오류 140 잘못된 생성 옵션 (0) | 2023.09.06 |
|---|---|
| 사용자 지정 개체를 소포 가능하게 하려면 어떻게 해야 합니까? (0) | 2023.09.06 |
| JPA 구성에서 기본 스키마 이름을 설정하는 방법은? (0) | 2023.09.06 |
| MySQL에서 문자열을 실행할 수 있습니까? (0) | 2023.09.06 |
| VBA에서 HTTP 요청을 시도할 때 "적절한 개체가 없으면 메서드가 유효하지 않습니다" 오류가 발생합니까? (0) | 2023.06.13 |