首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >powershell:拆分输出并在select-string之后打印

powershell:拆分输出并在select-string之后打印
EN

Stack Overflow用户
提问于 2018-06-02 05:06:40
回答 1查看 1.6K关注 0票数 1

首先,这是我第一次使用powershell。一切都是新的。我的脚本看起来像这样。

代码语言:javascript
复制
$SMTPServer = "smtp.gmail.com"
$SMTPPort = "587"
$Username = "username@domain.com"
$Password = "password"

$to = "Username @domain.com"

$subject = "daily_check"
$body = (Get-Content 'C:\Users\xyz\Downloads\mylog.log' | Select-String 'string.string1.string2 - Request:') | Out-String

$message = New-Object System.Net.Mail.MailMessage
$message.subject = $subject
$message.body = $body
$message.to.add($to)
#$message.cc.add($cc)
$message.from = $username
#$message.attachments.add($attachment)

$smtp = New-Object System.Net.Mail.SmtpClient($SMTPServer, $SMTPPort);
$smtp.EnableSSL = $true
$smtp.Credentials = New-Object System.Net.NetworkCredential($Username, $Password);
$smtp.send($message)

我收到了一封成功的电子邮件,所有的行都带有搜索字符串,它看起来像下面这样。

代码语言:javascript
复制
INFO    2018-06-01 06:03:01,855 string.string1.string2 - Request: QWERTY- 123 Request: abc- XX1343XX123-01 Request: Type- BB
INFO    2018-06-01 11:06:54,551 string.string1.string2 - Request: QWERTY- 123 Request: abc- XX-12573XX123-00 Request:  Type- BB
INFO    2018-06-01 11:51:50,124 string.string1.string2 - Request: QWERTY- 123 Request: abc- 123XX122233-03 Request:  Type- BB
INFO    2018-06-01 12:20:15,076 string.string1.string2 - Request: QWERTY- 123 Request: abc- XX-12563XX123-00 Request:  Type- BB
INFO    2018-06-01 12:24:25,233 string.string1.string2 - Request: QWERTY- 123 Request: abc- XX-123XX12913-00 Request:  Type- BB

但我希望我的输出如下所示。

代码语言:javascript
复制
2018-06-01 06:03:01, QWERTY- 123 abc- XX1343XX123-01 Type- BB
2018-06-01 11:06:54, QWERTY- 123 abc- XX-12573XX123-00 Type- BB
2018-06-01 11:51:50, QWERTY- 123 abc- 123XX122233-03 Type- BB
2018-06-01 12:20:15, QWERTY- 123 abc- XX-12563XX123-00 Type- BB
2018-06-01 12:24:25, QWERTY- 123 abc- XX-123XX12913-00 Type- BB

我使用-split ' '并试图将每个字符串转换为变量并使用它们,但我不能,即使我这样做了,也应该有更好的方法来做到这一点。任何帮助都是非常感谢的。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2018-06-02 05:46:46

看看-replace运算符和regular expressions。要从源格式转换为所需的格式,您可以执行以下操作:

代码语言:javascript
复制
$p = "^INFO +([0-9:, -]+)string.string1.string2 - Request: ([a-z-]+) ([0-9]+) Request: ([a-z-]+) ([A-Za-z0-9-]+) Request: (.*$)"
$newstring = $oldstring -replace $p, '$1 $2 $3 $4 $5 $6'

这段代码使用一个简单(但相当长)的正则表达式从源字符串中提取子匹配项,然后使用反向引用将整个字符串替换为新字符串,从而将子匹配项替换为字符串。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50650997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档