powershell删除行的第一个字符

时间:2012-01-13 10:51:42

标签: powershell line character

我使用PowerShell解析JBOSS日志文件。 典型的一行是这样的: 2011-12-08 09:01:07,636 ERROR [org.apache.catalina.core.ContainerBase。[jboss.web] .etc ..

我想删除字符1中的所有字符,直到单词ERROR。所以我想删除它之后的日期和时间,昏迷和数字。我希望我的行以ERROR开头,并在此之前删除所有内容。

我看了谷歌并尝试了我发现的不同的东西,但我很挣扎,无法让它发挥作用。我尝试使用substring和replace但是找不到如何删除所有字符,直到单词ERROR。

非常感谢任何帮助,

非常感谢!

2 个答案:

答案 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