2017-09-05 3 views
0

CSV 파일에서 특정 행 (결과)의 데이터를 특정 길이로 자르고/삭제하려고했습니다. "하위 문자열에 대한 오버로드"를 계속 가져옵니다. 어떤 아이디어?Powershell 부분 문자열 설정 특정 셀 길이

$Csv = Import-Csv $FileIn 
$CsvNew = ForEach($Row in $Csv){ 
$Row.Results.Substring((0,[System.Math]::Min(254,$Row.Results.Length)))} 

답변

3

하위 문자열 사용의 단순한 실수처럼 보입니다. 괄호 중 하나를 제거하십시오.

은에서 :

$Row.Results.Substring((0,[System.Math]::Min(254,$Row.Results.Length)))} 

사람 : 가독성을 위해서

$Row.Results.Substring(0,[System.Math]::Min(254,$Row.Results.Length))} 

, 당신은 당신의 문자열 변수에 계산을 넣을 수 있었다. 오류가 더욱 분명하게 드러났습니다.

$Csv = Import-Csv $FileIn 
$CsvNew = ForEach($Row in $Csv) 
{ 
    $MaxLength = [System.Math]::Min(254,$Row.Results.Length) 
    $Row.Results.Substring(0,$MaxLength) 
} 

편집 :

마지막으로

, 그 $ CsvNew (나는 당신의 예에서 걸린) 매장 아무것도주의주세요. CSV 행 내용을 편집하려면 대신이 내용을 사용하십시오.

$Csv = Import-Csv $FileIn 
$Csv | ForEach-Object { 
    $MaxLength = [System.Math]::Min(254,$_.Results.Length) 
    $_.Results.Substring(0,$MaxLength) 
} 

이 마지막 조각은 실제로 254 자 최대 결과 열을 트림 $에게 된 CSV 변수 내용을 편집합니다. (이 경우 파일로 내보낼 수 없으므로 ExportTo-CSV Cmdlet을 사용하여 새 $ Csv 콘텐츠를 내 보내야합니다.

+0

고마워요! 그것은 내가 가진 코드를 해결합니다. 나는 아직도 표를 놓치고 있다고 생각한다. 출력은 다음과 같습니다. ' 결과 필드 입력 = sometext 출력 = 8 ' 여분의 데이터를 잘라내는 필드 크기를 제한하는 것으로 촬영했습니다. 예를 들어 4로 설정하면 output = some이됩니다. – user2542412

+0

방금 ​​추가 한 마지막 스 니펫을 살펴보십시오. $ Csv 변수 내용을 편집하려면 파이프를 통해이 작업을 수행해야합니다. 마지막 예제는 실제로 값을 다듬을 것이고 수정은 셀에 직접 수행됩니다. –

+0

굉장! 고맙습니다! – user2542412