string - 通过 Powershell 进行日志解析 - 打印第 n 个元素之后的所有数组元素

标签 string powershell parsing logging

我正在解析一个日志文件,该文件的前 7 个元素以空格分隔,然后是一条日志消息或句子。我知道的知识足以在 PS 中使用,而且我每天都在学习更多,所以我不确定这是最好的方法,如果我没有利用更有效的方法(这将是第二天性),我深表歉意给你。我使用 -split(' ')[n] 逐行提取日志文件的每个字段。我能够很好地提取第一部分,因为它们是用空格分隔的,但我不确定如何将其余元素提取到行尾。

$logFile=Get-Content $logFilePath
$dateStamp=$logfile -split(' ')[0]
$timeStamp=$logfile -split(' ')[1]
$requestID=$logfile -split(' ')[3]
$binaryID=$logfile -split(' ')[4]
$logID=$logfile -split(' ')[5]
$action=$logfile -split(' ')[6]

$logMessage=$logfile -split(' ')[?]

这不是我可以导入的 CSV。我更熟悉 bash 中的字符串操作,因此我能够成功地用“,”替换前 7 个元素中的空格,以及末尾的空格:

#!/bin/bash

inputFile="/cygdrive/c/Temp/logfile.log"
outputFile="/cygdrive/c/Temp/test_log.csv"

echo "\"DATE\",\"TIME\",\"HYPEN\",\"REQUESTID\",\"BINARY\",\"PROC_NUMBER\",\"MESSAGE\"" > $outputFile

while read -a line
do
        arrLength=$(echo ${#line[@]})
        echo \"${line[0]}\",\"${line[1]}\",\"${line[2]}\",\"${line[3]}\",\"${line[4]}\",\"${line[5]}\",\"${line[@]:6:$arrLength}\"
done < $inputFile >> $outputFile

您能否帮助打印从位置 n 到末尾的数组元素,或者在 PS 中适当替换空格,以便我有一个可以导入的 CSV?只是试图避免在 bash 中转换它,然后在 PS 中导入它的两步过程,但我仍在研究。我确实找到了这篇文章Parsing Text file and placing contents into an Array Powershell 用于导入文件,假设它是空格分隔的并且适用于前 7 个元素,但不确定之后的所有元素。

当然,我欢迎任何其他 PS 解决方案,例如我通过谷歌搜索看到的 [something]::SOMETHING 之一,可以更无缝地完成这一切。

最佳答案

您可以指定字符串拆分的最大子字符串数,如下所示:

$splittedRow = $logfile.split(' ',8)

$dateStamp=$splittedRow[0]
$timeStamp=$splittedRow[1]
$requestID=$splittedRow[3]
$binaryID=$splittedRow[4]
$logID=$splittedRow[5]
$action=$spltttedRow[6]

$logMessage=$splittedRow[7]

关于string - 通过 Powershell 进行日志解析 - 打印第 n 个元素之后的所有数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59565359/

相关文章:

java - 通过字符串格式的 IP 地址递增

variables - Powershell中的动态变量和值分配

.net - PowerShell - 将特定文件压缩到文件夹中

powershell - 如何从powershell获取返回值并将其放入批处理文件中?

json - 使用 NSJSONSerialization 解析 JSON : Error 3840 - Data Corrupted?

java - XmlPullParser 获取子节点的首选方式?

java - 有什么方法可以搜索,然后从 String 中调用 java 中的方法?

c - 在 C 中实现 strrchr 时复制字符串的问题

c++ - C++中字符串类的属性

javascript - 无法使用 .indexOf() 找到数组索引