我使用PowerShell解析JBOSS日志文件。 典型的一行是这样的: 2011-12-08 09:01:07,636 ERROR [org.apache.catalina.core.ContainerBase。[jboss.web] .etc ..
我想删除字符1中的所有字符,直到单词ERROR。所以我想删除它之后的日期和时间,昏迷和数字。我希望我的行以ERROR开头,并在此之前删除所有内容。
我看了谷歌并尝试了我发现的不同的东西,但我很挣扎,无法让它发挥作用。我尝试使用substring和replace但是找不到如何删除所有字符,直到单词ERROR。
非常感谢任何帮助,
非常感谢!
答案 0 :(得分:5)
这个单行将读取文件的内容(在示例中为jboss.txt),并且将该行包含ERROR的所有行替换为后面的 。最后,它会在processed_jboss.txt
中保存结果get-content jboss.txt | foreach-object {$_ -replace "^.*?(ERROR.*)",'$1'} | out-file processed_jboss.txt
答案 1 :(得分:2)
假设日志行在string类型的变量中,则应执行此操作:
$line = "2011-12-08 09:01:07,636 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].etc.."
$ErrorIndex = $line.indexof("Error",0)
$CleanLogLine = $Line.Substring($ErrorIndex, $line.length)
参考: http://msdn.microsoft.com/en-us/library/system.string.aspx