programing

텍스트 파일에서 특정 문자열 찾기

easyjava 2023. 9. 6. 23:04
반응형

텍스트 파일에서 특정 문자열 찾기

저는 이 질문이 "신입자 질문"일 수도 있다는 것을 알지만, 아마도 제가 논리적인 실수를 했을 것입니다.

텍스트 파일이 있는데 문자열이 포함되어 있는지 검색하고 싶습니다.아래와 같이 시도해 보았지만 작동이 되지 않습니다.

$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

반응형