繁体   English   中英

Powershell从文件中提取字符串

[英]Powershell extract string from file

尝试从文件中提取一些字符串。 这是文件中文本的简化示例:

<modelName>thing1</modelName><gtin>123456789</gtin><description>blah blah blah</description>
<modelName>thing2</modelName><gtin>789456123</gtin><description>blah blah blah</description>
<modelName>thing3</modelName><gtin>456789123</gtin><description>blah blah blah</description>

我只想提取每行的这一部分: <gtin>xxxxxxx</gtin>并将它们放入另一个文件中。

我不想整条线,只是gtin。

这是我尝试过的:

Get-Content -Path C:\firstFile.xml -Readcount 1000 | foreach { $_ -match "<gtin1>*</gtin1>" } | out-file C:\gtins.txt

但是,您可能会猜测它不起作用。

任何帮助是极大的赞赏。 我觉得这很容易做到。

谢谢!

不要使用正则表达式解析XML。

使用实际的XML解析器从XML文件提取数据。

[xml]$xml = Get-Content 'C:\firstfile.xml'
$xml.SelectNodes('//gtin') | Select-Object -Expand '#text'

编辑: Ansgar Wiechers是正确的,您不应使用正则表达式来解析XML,并且正确地进行XML解析是首选。)

您可以使用Select-String和正则表达式提取子Select-String 例:

Get-Content "C:\firstfile.xml" | Select-String '(<gtin>.+</gtin>)' | ForEach-Object {
  $_.Matches[0].Groups[1].Value
}

如果只需要标签之间的值,请移动()以仅包围表达式的.+部分。

有关正则表达式的更多信息:

PS C:\> help about_Regular_Expressions

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM