상세 컨텐츠

본문 제목

PowerShell(파워쉘)명령어 파일내 문자열 찾기 (값 추출)

Windows/PowerShell&Command

by Hoonjo 2023. 6. 23. 19:00

본문

PowerShell(파워쉘)명령어 파일 내 문자열 찾기 (값 추출)

PowerShell Command Find a string in a file (Extract a Value)

 

 

 

특정 파일 내에서 내가 찾고자 하는 문자열을 출력하는 방법에 대해 알아보겠습니다.

 

 

1. 문자열 찾기

 

Select-String이라는 명령어로 찾을 수 있습니다.

 

명령어:

Select-String "AGENT_HOME=" C:\tistorytest\conf\testConfig.txt

 

Select-String 결과

 

설명:

                                                   Select-String     "찾을 문자열"      파일경로

 

 

결과 값에 파일명과 행의 위치가 같이 출력됩니다.

문자만 출력되도록 해보겠습니다.

 

 


 

2. 불필요한 문자 필터링

 

명령어:

Select-String "AGENT_HOME=" C:\tistorytest\conf\$ENV_FILENAME | foreach{$_.line}

나온 결과값을 foreach문(ForEach-Object 명령어와 동일) 으로 반복해서 line(결과만) 출력하도록 합니다.

🧐 $_.Linenumber 또는 $_. Filename을 입력하면 행 수, 파일명만 출력됩니다.

 

$_.line 결과

 

config 파일 같은 경우 임시로 주석처리를 해 놓는 경우가 많습니다.

나중에 기억하기 위함이죠

주석으로 입력된 값은 불러오지 않는 방법을 알아보겠습니다.

 


 

3. 주석값 필터링

 

명령어:

Select-String "AGENT_HOME=" C:\tistorytest\conf\testConfig.txt | foreach{$_.line} | ?{$_ -notmatch '^#'}

?{$_ -notmatch '^#'} 구문을 추가하여 '#'으로 시작하는 행은 Select-String 결과값에서 제외합니다.

?는 Where-Object 와 동일한 명령어입니다.

 

주석값이 결과에서 제외된 모습

 

주석 값을 제외시켰으니 이제 변수의 값만 추출해보겠습니다.

 


 

4. 변수 값 추출

 

문자열 자르기 (split)을 통해 쉽게 구현할 수 있습니다.

 

명령어:

Select-String "AGENT_HOME=" C:\tistorytest\conf\testConfig.txt | foreach{$_.line} | ?{$_ -notmatch '^#'} | ForEach-Object { ([string]$_).Split("=")[1] }

ForEach-Object { ([string]$_).Split("=")[1] } 구문을 추가해 줍니다.

앞서 나온 결과값을 "=" 문자열 기준으로 배열로 나누고 1번째 배열의 값을 출력합니다.

 

값만 출력된 모습

 

짠 🎉 드디어 원하는 결과값을 추출해 내었습니다.

 

 

관련글 더보기