PowerShell로 Excel의 VlookUp을 하고 싶은 거.

8957 단어 PowerShelltech

하고 싶은 일


다음 파일이 있어도
sample2.csv
"foo",100,data1
"bar",200,data2
"hoge",300,data3
첫 번째 열에 맞는 두 번째 줄을 표시하고 싶습니다.
예를 들어, bar가 검색 객체인 경우 data2를 표시합니다.
이미지
> myVLookUP .\sample2.csv "bar" 2
data2

스크립트 예


myVLookUP.ps1
Function vlookup($filename, $pattern, $num)
{
    $A = Select-String -Pattern $pattern $filename
    $B = $A.toString().Split(",");
    $B[$num]
}

vlookup .\sample2.csv "bar" 2
실행 결과는 다음과 같다.
> .\myVLookUp.ps1
data2

Function 정보


Function의 쓰기 방법은 문서에 기재되어 있다.

보충(Get-Member)


이번에 제작된 스크립트는 함수에서 사용$A,$B.
myVLookUP.ps1
Function vlookup($filename, $pattern, $num)
{
    $A = Select-String -Pattern $pattern $filename
    $B = $A.toString().Split(",");
    $B[$num]
}

vlookup .\sample2.csv "bar" 2
이 멤버들은 뭐가 있을까.
Get-Member.예를 들어 $A의 멤버들을 보세요.
다음과 같이 표시됩니다.
> $A = Select-String -Pattern "bar" .\sample2.csv
> $A | Get-Member


   TypeName: Microsoft.PowerShell.Commands.MatchInfo

Name         MemberType Definition
----         ---------- ----------
Equals       Method     bool Equals(System.Object obj)
GetHashCode  Method     int GetHashCode()
GetType      Method     type GetType()
RelativePath Method     string RelativePath(string directory)
ToString     Method     string ToString(), string ToString(string directory)
Context      Property   Microsoft.PowerShell.Commands.MatchInfoContext Context {get;set;}
Filename     Property   string Filename {get;}
IgnoreCase   Property   bool IgnoreCase {get;set;}
Line         Property   string Line {get;set;}
LineNumber   Property   int LineNumber {get;set;}
Matches      Property   System.Text.RegularExpressions.Match[] Matches {get;set;}
Path         Property   string Path {get;set;}
Pattern      Property   string Pattern {get;set;}

좋은 웹페이지 즐겨찾기