у меня есть следующая проблема, я нуждаюсь в том, чтобы заменить Pipe между "колонной" текстового файла, который я получаю с SAP со следующей структурой
Поскольку возможно оценивать в файле, колонны отделены из-за pipes, и проблема, которая у меня есть, состоит в том, что в колонне текста какие-то из описаний он может содержать Pipe в этой, тогда, когда я касаюсь этот файл моего BD, он посылает мне ошибку, потому что он "думает", что этот Pipe - разделитель колонны.
Я старался создавать рукописный шрифт, но мне не удается решить это, моя идея была бы чем-то, как помещение моего первого курсора в колонну текста и второго перед Периодом, так как Период всегда находится после колонны Текста, рукописный шрифт, который у меня есть до настоящего времени, - следующий:
$log = get-content D:\test\archivo.txt | select -first 1 -skip 9
$logg = get-content D:\test\archivo.txt | select -first 1 -skip 11
$archivo = get-content D:\test\archivo.txt
$pos_ini = ($log | Select-String "Texto").Matches.Index
$pos_fin = ($log | select-string "Período").Matches.Index
#$pos_ini = [int]$pos_ini+1
$pos_fin = [int]$pos_fin-1
[int]$res = [int]$pos_fin-[int]$pos_ini
foreach ($line in $archivo) {
$logg.Substring($pos_ini,$res) -replace '\|',' ' | Set-Content D:\test\archivo.TXT
# if ($line -cmatch "\|") {
# $quitar = $line.Split($pos_ini,$pos_fin)
# $quitar
#$quitar = $line.Substring($pos_ini,$pos_fin)
#$line | out-file -FilePath "D:\test\archivo.txt" -Append
# }
}
Которое не, поскольку делать значит заменять линию, где он содержал Pipe, и сохранять весь файл
Принимая во внимание, что у каждого элемента заголовка таблицы есть максимальный возможный logitud для стоимости, ты мог бы извлекать каждую стоимость, основанную на длине элементов заголовка. Вышедшие
#Obtener la cabecera de la tabla
$sHeader = Get-Content "D:\DemoFile.txt" | Select-Object -first 1 -skip 9
#Obtener las lineas de la tabla
$sTable = Get-Content "D:\DemoFile.txt" | Select-Object -Skip 11
$aHeader = $sHeader.Split('|') | Where-Object { Принимая во внимание, что у каждого элемента заголовка таблицы есть максимальный возможный logitud для стоимости, ты мог бы извлекать каждую стоимость, основанную на длине элементов заголовка. Вышедшие
[110] :
93 |SOC |ENT |2019 |12345678 | 8 | 1 |PUEDE CONTENER UN| DENTRO DE ESTA COLUMN | 12 | |
93 |SOC |ENT |2819 |12345678 | 8 | 1 |PUEDE CONTENER UN| DENTRO DE ESTA COLUMN | 12 | |
93 |SOC |ENT |2019 |12345678 | 8 | 1 |PUEDE CONTENER UN| DENTRO DE ESTA COLUMN | 12 | |
93 |SOC |ENT |2019 |12345678 | 8 | 1 |PUEDE CONTENER UN| DENTRO DE ESTA COLUMN | 12 | |
Ledger Sociedad EntidadCP Ejercicio NoDoc PosDoc NoImp Texto Periodo MasCol
------ -------- --------- --------- ----- ------ ----- ----- ------- ------
93 SOC ENT 2019 12345678 8 1 PUEDE CONTENER UN| DENTRO DE ESTA COLUMN 12
93 SOC ENT 2819 12345678 8 1 PUEDE CONTENER UN| DENTRO DE ESTA COLUMN 12
93 SOC ENT 2019 12345678 8 1 PUEDE CONTENER UN| DENTRO DE ESTA COLUMN 12
93 SOC ENT 2019 12345678 8 1 PUEDE CONTENER UN| DENTRO DE ESTA COLUMN 12
-ne '' } # Extraer Nombre de las columnas
$PSData=@()
foreach ($sColValue in $sTable) {
$aData=@()
For ($i = 0; $i -le $aHeader.Count - 1; $i++) {
$iStartPos = $sHeader.IndexOf($aHeader[$i]) #Inicio de la cadena a extraer
$iEndPos= $aHeader[$i].Length
$sData=$sColValue.Substring($iStartPos,$iEndPos)
$aData+=$sData #Solo para crear un Objeto personalizado de powershell y visualizar los datos con Format-Table
Write-Host $sData "|" -NoNewline #Imprimir cada Valor de la fila/linea procesada
}
Write-Host "" #Salot de linea en la consola
#Object personalizado
$PSData += [PSCustomObject]@{
Ledger = $aData[0]
Sociedad = $aData[1]
EntidadCP=$aData[2]
Ejercicio=$aData[3]
NoDoc=$aData[4]
PosDoc=$aData[5]
NoImp=$aData[6]
Texto=$aData[7]
Periodo=$aData[8]
MasCol=$aData[9]}
}
#Imprimir el Objecto Personalizado
$PSData | Format-Table -AutoSize
:
93 |SOC |ENT |2019 |12345678 | 8 | 1 |PUEDE CONTENER UN| DENTRO DE ESTA COLUMN | 12 | |
93 |SOC |ENT |2819 |12345678 | 8 | 1 |PUEDE CONTENER UN| DENTRO DE ESTA COLUMN | 12 | |
93 |SOC |ENT |2019 |12345678 | 8 | 1 |PUEDE CONTENER UN| DENTRO DE ESTA COLUMN | 12 | |
93 |SOC |ENT |2019 |12345678 | 8 | 1 |PUEDE CONTENER UN| DENTRO DE ESTA COLUMN | 12 | |
Ledger Sociedad EntidadCP Ejercicio NoDoc PosDoc NoImp Texto Periodo MasCol
------ -------- --------- --------- ----- ------ ----- ----- ------- ------
93 SOC ENT 2019 12345678 8 1 PUEDE CONTENER UN| DENTRO DE ESTA COLUMN 12
93 SOC ENT 2819 12345678 8 1 PUEDE CONTENER UN| DENTRO DE ESTA COLUMN 12
93 SOC ENT 2019 12345678 8 1 PUEDE CONTENER UN| DENTRO DE ESTA COLUMN 12
93 SOC ENT 2019 12345678 8 1 PUEDE CONTENER UN| DENTRO DE ESTA COLUMN 12