PowerShell에서 Awk 명령 수행

Marion Paul Kenneth Mendoza 2022년8월18일
PowerShell에서 Awk 명령 수행

awk는 데이터 조작 및 보고서 생성을 위한 스크립팅 언어입니다. awk는 컴파일 없이 변수, 텍스트 함수, 숫자 함수 및 논리 연산자를 지원하는 명령줄 프로그래밍 언어입니다.

불행히도 awk는 Windows 운영 체제를 사용하기 때문에 PowerShell에 완전히 통합되지 않았습니다. 이 기사에서는 PowerShell을 사용하여 awk 명령과 유사한 명령 및 기능을 사용하는 방법에 대해 설명합니다.

PowerShell에서 awk 명령 수행

awk 유틸리티를 사용하면 프로그래머는 텍스트 패턴을 지정하는 명령문의 형태로 간단하지만 강력한 프로그램을 만들 수 있습니다. 이는 일반적으로 Linux 명령이나 Linux에 익숙하지 않은 사용자에게는 생소할 수 있습니다. 이러한 텍스트 패턴은 각 행에서 검색되고 일치하는 항목이 발견되면 조치가 취해집니다.

‘awk’는 주로 패턴 스캐닝 및 처리에 사용됩니다. 하나 이상의 파일을 탐색하여 지정된 패턴과 일치하는 행이 포함되어 있는지 확인한 다음 관련 작업을 수행합니다.

다음 코드 조각은 awk를 사용하는 명령의 예입니다.

awk '/"Box11"/ { print $0 }' test.txt|awk '{ SUM += $4} END { print SUM} '

awk 명령과 같은 유사한 작업을 수행하기 위해 Get-Content 명령을 사용하여 파일 내용을 가져오고 Windows PowerShell에서 몇 가지 문자열 작업을 수행합니다. 위의 예를 들면 PowerShell에서 다음과 같이 보일 것입니다.

예제 코드:

Get-Content c:\temp\test.txt |
Where-Object{$_ -match '"Box11"'} |
ForEach-Object{($_ -split "\s+")[3]} |
Measure-Object -Sum |
Select-Object -ExpandProperty Sum
  • Get-Content 명령은 텍스트 파일의 내용을 가져옵니다.
  • Where-Object 명령은 Box11 문자열이 있는 행을 필터링합니다.
  • 그런 다음, 일단 필터링되면 스크립트는 네 번째 요소에서 각 줄 문자열을 분할하도록 반복됩니다. PowerShell은 인덱스 0에서 시작한다는 것을 기억하십시오. 따라서 awk 명령과 달리 4 대신 3 인덱스를 사용합니다.
  • Measure-Object는 속성에 대한 계산을 수행하며 이 경우 Sum입니다.
  • 마지막으로 Select-ObjectSum 확장 속성을 출력합니다.

awk 명령의 PowerShell 버전이 약간 더 깁니다. 좋은 점은 PowerShell에서 별칭과 몇 가지 PowerShell 연산자를 사용하여 바로 가기를 만들 수 있다는 점입니다.

예제 코드:

gc c:\temp\test.txt | ?{$_ -match '"Box11"'} | %{(-split $_)[3]} |
  Measure -Sum | Select -Exp Sum

또는 WSL(Linux용 Windows 하위 시스템)이 활성화된 경우 awk 명령을 그대로 실행할 수 있습니다. WSL(Linux용 Windows 하위 시스템)이라고 하는 Windows 운영 체제의 기능을 사용하면 Linux 명령줄 도구 및 GUI 응용 프로그램이 포함된 Linux 파일 시스템을 Windows에서 직접 실행할 수 있습니다.

따라서 wsl 명령을 호출하고 awk 명령을 기본적으로 수행해야 합니다.

예제 코드:

wsl -e awk '/"Box11"/{sum += $4} END{print sum}' test.txt
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn

관련 문장 - PowerShell Command