Powershell仅从文件中选择行号行

Powershell仅从文件中选择行号行,powershell,Powershell,我喜欢浏览日志文件,只列出行号和行号 我现在的剧本是 #$ERROR_MESSAGE = Get-Content $_.FullName | Select-String "ORA-" | select LineNumber,Line 我需要像这样: Select-String -Pattern "ORA-" -Path $_.FullName -SimpleMatch | %{ "{0}: {1}" -f ($_.LineNumber, $_.Line)} 第592行:R

我喜欢浏览日志文件,只列出行号和行号 我现在的剧本是

#$ERROR_MESSAGE = Get-Content $_.FullName | Select-String "ORA-" | select LineNumber,Line
我需要像这样:

Select-String -Pattern "ORA-" -Path $_.FullName -SimpleMatch | %{ "{0}: {1}" -f ($_.LineNumber, $_.Line)}
第592行:RMAN-00571:==================================================

第593行:RMAN-00569:=============错误消息堆栈如下==========

第594行:RMAN-00571:==================================================

第595行:RMAN-03002:backup plus archivelog命令在2015年5月9日00:20:41失败

第596行:ORA-19502:文件“vsqgb979_1_1”的写入错误,块号2740897(块大小=8192)

第597行:ORA-27030:skgfwrt:sbtwrite2返回错误

第598行:ORA-19511:从媒体管理器层接收到错误,错误文本:


有什么想法吗?

未经测试,但类似的方法应该可以:

$ERROR_MESSAGE = Get-Content $_.FullName | Select-String "ORA-" | select @{e={'Line {0}: {1}' -f $_.LineNumber, $_.Line}; n='LineInfo'}

未经测试,但类似的东西应该可以工作:

$ERROR_MESSAGE = Get-Content $_.FullName | Select-String "ORA-" | select @{e={'Line {0}: {1}' -f $_.LineNumber, $_.Line}; n='LineInfo'}

你可以这样做:

Select-String -Pattern "ORA-" -Path $_.FullName -SimpleMatch | %{ "{0}: {1}" -f ($_.LineNumber, $_.Line)}

你可以这样做:

Select-String -Pattern "ORA-" -Path $_.FullName -SimpleMatch | %{ "{0}: {1}" -f ($_.LineNumber, $_.Line)}

我明白了。。。如何忽略“@{LineInfo=”和“}”@{LineInfo=Line 276:ORA-31693:表数据对象“OCS_SUPERVISOR”。“OCS_导入_日志”加载/卸载失败,并且由于错误而被跳过:}{LineInfo=Line 277:ORA-02354:导出/导入数据时出错}{LineInfo=Line 278:O RA-01555:快照太旧:名称为的回滚段编号8“_SYSSMU8_3132418526$”太小}{LineInfo=Line 381:O RA-39181:由于“OCS_SUPERVISOR”上的细粒度访问控制,“DEOSchedule234_T AB”}”在select之前使用Where对象块进行筛选。@AnsgarWiechers很抱歉,但我确实在问他之前用谷歌搜索了一下。。我无法理解它,也无法理解它之间的联系!你的评论实在太难理解你真正想要出来的是什么。请编辑问题以在f中添加新信息ormat是可以理解的。他的问题是如何导出数据。也许只需添加一个
| Select Object-Expand LineInfo
我就明白了…如何忽略“@{LineInfo=”和“}”@{LineInfo=Line 276:ORA-31693:表数据对象“OCS_SUPERVISOR”。“OCS_导入_日志”加载/卸载失败,由于错误而被跳过:}@{LineInfo=Line 277:ORA-02354:导出/导入数据时出错}{LineInfo=Line 278:O RA-01555:快照太旧:名称为“\u SYSSMU8\u 3132418526$”的回滚段编号8太小}{LineInfo=Line 381:O RA-39181:由于“OCS\u主管”上的细粒度访问控制,“DEOSchedule234\u T AB”}在select之前使用Where对象块进行筛选。@AnsgarWiechers很抱歉,但我确实在问他之前用谷歌搜索了一下。。我无法理解它,也无法理解它之间的联系!你的评论实在太难理解你真正想要出来的是什么。请编辑问题以在f中添加新信息ormat是可以理解的。他的问题是如何导出数据。也许只需添加一个
| Select Object-Expand LineInfo
,就不需要使用Get Content调用,因为您可以告诉Select String在哪个文件中查找,所以我去掉了它。然后我所做的就是将它导入到一个for each(“%”)中循环,并创建一个包含行号和行的格式化字符串,这是管道的最后一部分。感谢allot…这对我来说是巨大的,我需要进行读取和测试的allot…不需要使用Get Content调用,因为你可以告诉Select string文件中的内容,所以我去掉了它。然后我所做的就是管道它,Into为每个(“%”循环创建一个格式化字符串,其中包含行号和行,这是管道的最后一部分。感谢allot…这对我来说太大了,我需要进行allot的读取和测试。。。