Powershell에서 일부 .tex 문서의 보관을 자동화하려고합니다. 이름과 같이 선언 된 일부 변수의 값을 필터링하고 싶습니다. 이것은 내가 구글에서 얼마간의 시간을 보낸 후 지금까지 가지고있는 것입니다.
$FamilyNameLine = Select-String $DocFullFileName -Pattern "\\FamilyName{.*?}" | Select Matches
$FamilyName = $FamilyNameLine -replace '\\FamilyName{', ''
나는 이것을 사용하여 가족 이름을 얻으려고 시도했지만 반환
@{Matches=System.Text.RegularExpressions.Match[]}
그 후에 마지막 브래킷을 잘라내려고합니다
아직 Powershell과 RegEx를 처음 사용하지만 (grep과 함께 약간만 사용했습니다) 명백한 것을 놓친 것 같습니다.
샘플 입력 :
\usepackage{grffile}
\usepackage[utf8]{inputenc}
\usepackage{tocbibind}
\usepackage{pdfpages}
\usepackage{amsmath}
\usepackage{rotating}
\FamilyName{Mustermann}
\cleardoublepage
\pagenumbering{arabic}
샘플 출력
echo $FamilyName
Mustermann
내가 이해하는 한 주요 문제는 다음 줄입니다.
$FamilyNameLine = Select-String $DocFullFileName -Pattern "\\Surname{.*?}" | Select Matches
machting 라인을 검색하려면 코드를 다음과 같이 변경하십시오.
$FamilyNameLine = Select-String $DocFullFileName -Pattern "\\Surname{.*?}" | select -ExpandProperty Line
패턴이 일치하는 문서의 행을 반환합니다. 나는 개체 의 Line
속성을 사용했습니다 MatchInfo
. 메서드의 속성 메서드에 대한 정보를 검색하려면을 사용할 수 있습니다 Get-Member
. 예:
Select-String $DocFullFileName -Pattern "\\Surname{.*?}" | 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;}
나중에 다음을 통해 교체 할 수 있습니다.
$FamilyNames = @() # Empty array
$FamilyNameLine | Foreach-Object { $FamilyNames += ( $_ -replace '\\FamilyName{', '') }
도움이되기를 바랍니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다