首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Powershell中格式化模式文本导出

如何在Powershell中格式化模式文本导出
EN

Stack Overflow用户
提问于 2019-05-30 04:57:14
回答 1查看 103关注 0票数 0

我正在创建一个powershell脚本来格式化.txt文件,并最终将其转换为csv文件(除非这可以一起完成)。我已经挖掘了相当多的其他问题,但还没有能够解决它。每次我运行下面的脚本时,它都会选择我需要的所有数据,但将它们全部放在一行中。

代码语言:javascript
复制
$importPath = 'C:\Example.txt'
$pattern = "<return>(.*?)</return>"

$string = Get-Content $importPath
$result = [regex]::match($string, $pattern).Groups[1].Value
$result | Out-File -FilePath 'C:\ResponseOnly.txt'

如果能想出一种方法来获取<return></return>之间的所有信息,同时仍然将所有数据放在原始行上,我将非常感激。

源文件示例:

代码语言:javascript
复制
Status: OK
Time Taken: 193
Size: 46511
Timestamp: Thu May 30 03:39:37 MDT 2019
TestStep: getReportResultCsv

----------------- Messages ------------------------------

----------------- Properties ------------------------------
Endpoint: XXXXXXXXXXXXXXXXXXXXXXX
Username: XXXXXXXXXXXXXXXXXXXXXXX
domain: XXXXXXXXXXXXXXXXXXXXXXX HTTP/1.1
Encoding: UTF-8
Password: XXXXXXXXXXXXXXXXXXXXXXX

---------------- Request ---------------------------
Request Headers: SOAPAction : ""
Authorization : Basic XXXXXXXXXXXXXXXXXXXXXXX
Connection : Keep-Alive
User-Agent : Apache-HttpClient/4.1.1 (java 1.5)
Host : XXXXXXXXXXXXXXXXXXXXXXX
Accept-Encoding : gzip,deflate
Content-Length : 378
Content-Type : text/xml;charset=UTF-8


<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="XXXXXXXXXXXXXXXXXXXXXXX">
  <soapenv:Header/>
   <soapenv:Body>
      <ser:getReportResultCsv>
         <!--Optional:-->
         <identifier>A0294584B2F933513rt0.c.ie.oF0BBB@5p70B7FsBlEf4v490cAm</identifier>
      </ser:getReportResultCsv>
   </soapenv:Body>
</soapenv:Envelope>

---------------- Response --------------------------
Response Headers: Transfer-Encoding : chunked
Server : nginx
Access-Control-Allow-Origin : *
Access-Control-Allow-Methods : POST,GET,OPTIONS
Connection : keep-alive
Content-Encoding : gzip
Set-Cookie : clientId=XXXXXXXXXXXXXXXXXXXXXXX
#status# : HTTP/1.1 200 OK
Date : Thu, 30 May 2019 09:39:37 GMT
Content-Type : text/xml;charset=UTF-8


<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
   <env:Header/>
   <env:Body>
      <ns2:getReportResultCsvResponse xmlns:ns2="XXXXXXXXXXXXXXXXXXXXXXX">
         <return>DATE,AGENT GROUP,AGENT NAME,CALLS,HANDLE TIME,Average HANDLE TIME,HOLD TIME,Average HOLD TIME,Average AFTER CALL WORK TIME
2019/04/04,Billy Bob,Joe Joseph,6,04:15:53,00:42:39,00:00:00,00:00:00,00:01:55
2019/04/05,Billy Bob,Joe Joseph,14,04:39:26,00:19:58,00:47:53,00:03:25,00:02:20
2019/04/06,Billy Bob,Joe Joseph,11,06:33:13,00:35:45,00:17:21,00:01:35,00:04:30
2019/04/07,Billy Bob,Joe Joseph,13,05:47:06,00:26:42,00:02:03,00:00:09,00:02:27
2019/04/08,Billy Bob,Joe Joseph,11,03:20:21,00:18:13,00:00:03,00:00:00,00:02:44</return>
      </ns2:getReportResultCsvResponse>
   </env:Body>
</env:Envelope>

文件应该是怎样的示例:

代码语言:javascript
复制
DATE,AGENT GROUP,AGENT NAME,CALLS,HANDLE TIME,Average HANDLE TIME,HOLD TIME,Average HOLD TIME,Average AFTER CALL WORK TIME
2019/04/04,Billy Bob,Joe Joseph,6,04:15:53,00:42:39,00:00:00,00:00:00,00:01:55
2019/04/05,Billy Bob,Joe Joseph,14,04:39:26,00:19:58,00:47:53,00:03:25,00:02:20
2019/04/06,Billy Bob,Joe Joseph,11,06:33:13,00:35:45,00:17:21,00:01:35,00:04:30
2019/04/07,Billy Bob,Joe Joseph,13,05:47:06,00:26:42,00:02:03,00:00:09,00:02:27
2019/04/08,Billy Bob,Joe Joseph,11,03:20:21,00:18:13,00:00:03,00:00:00,00:02:44
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-30 05:18:40

这比您预期的要容易,因为您拥有的输入内容是XML。试试这个:

代码语言:javascript
复制
$importPath = 'C:\Example.txt'
[xml]$DataIn=Get-Content $importPath
$DataIn.Envelope.Body.getReportResultCsvResponse.return| Out-File -FilePath 'C:\ResponseOnly.txt'

这只会让你得到你想要的东西。

如果您真的想使用RegEx,我会将整个文件作为多行字符串读取,并与之匹配以获得您的输出。您只需要告诉RegEx,当您这样做时,您将使用多行字符串。

代码语言:javascript
复制
$pattern = "(?ms)<return>(.*?)</return>"
$string = Get-Content $importPath -raw
$result = [regex]::match($string, $pattern).Groups[1].Value
$result | Out-File -FilePath 'C:\ResponseOnly.txt'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56368400

复制
相关文章

相似问题

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