需要在PowerShell中的两种模式之间获取字符串

坡道

我需要匹配一个模式,即“商品名称”,并在模式“ <dd>之间的下一行中获取字符串</dd>

样本输入文件:

C:\Users\rpm\Desktop\sample.txt:133:    <dt>Commodity Name</dt>
C:\Users\rpm\Desktop\sample.txt:134:    <dd>Grocery</dd>
C:\Users\rpm\Desktop\sample.txt:136:    <dt>IP address</dt>
C:\Users\rpm\Desktop\sample.txt:137:    <dd>XXX.XXX.XXX.XXX port 8000</dd>
C:\Users\rpm\Desktop\sample.txt:144:    <dt>Commodity Serial #</dt>
C:\Users\rpm\Desktop\sample.txt:145:    <dd>0055500000</dd>
C:\Users\rpm\Desktop\sample.txt:147:    <dt>Client IP</dt>
C:\Users\rpm\Desktop\sample.txt:148:    <dd>xxx.xxx.xxx.xxx</dd>
C:\Users\rpm\Desktop\sample.txt:150:    <dt>Client Logged In As</dt>
C:\Users\rpm\Desktop\sample.txt:151:    <dd>rpm123</dd>
C:\Users\rpm\Desktop\sample.txt:153:    <dt>User is member of</dt>
C:\Users\rpm\Desktop\sample.txt:154:    <dd>BP-RPM\COMD_CSO_ITM-AVAI_Def,BP-RPM\user</dd>

需要匹配的模式如

  • 商品名称
  • IP地址
  • 商品编号
  • 客户端IP
  • 客户端登录为
  • 用户是的成员

并在标签之间的匹配模式的下一行中获取值<dd> & </dd>

所需的输出:

Grocery | XXX.XXX.XXX.XXX port 8000 | 0055500000 | xxx.xxx.xxx.xxx | rpm123 | BP-RPM\COMD_CSO_ITM-AVAI_Def,BP-RPM\user
马丁·布兰德尔

我将开始创建一个array定义您的关键字:

$keywords = @(
    '<dt>Commodity Name</dt>'
    '<dt>IP address</dt>'
    '<dt>Commodity Serial #</dt>'
    '<dt>Client IP</dt>'
    '<dt>Client Logged In As</dt>'
    '<dt>User is member of</dt>'
)

现在,您可以通过join将关键字|Select-Stringcmdlet结合使用:

$file = 'C:\Users\rpm\Desktop\sample.txt'
$content = Get-Content $file
$content | Select-String -Pattern ($keywords -join '|')

这将为您提供每个匹配关键字的行号。现在您可以遍历结果,按索引访问下一行并裁剪preif<dd></dd>postifx:

ForEach-Object {
        [regex]::Match($content[$_.LineNumber], '<dd>(.+)</dd>').Groups[1].Value
    }

正则表达式:

正则表达式可视化

输出:

Grocery
XXX.XXX.XXX.XXX port 8000
0055500000
xxx.xxx.xxx.xxx
rpm123
BP-RPM\COMD_CSO_ITM-AVAI_Def,BP-RPM\user

最后,您必须加入结果|以得到所需的输出。这是整个脚本:

$keywords = @(
    '<dt>Commodity Name</dt>'
    '<dt>IP address</dt>'
    '<dt>Commodity Serial #</dt>'
    '<dt>Client IP</dt>'
    '<dt>Client Logged In As</dt>'
    '<dt>User is member of</dt>'
)

$file = 'C:\Users\rpm\Desktop\sample.txt'
$content = Get-Content $file

($content | Select-String -Pattern ($keywords -join '|') | 
    ForEach-Object {
        [regex]::Match($content[$_.LineNumber], '<dd>(.+)</dd>').Groups[1].Value
    }) -join ' | '

输出:

Grocery | XXX.XXX.XXX.XXX port 8000 | 0055500000 | xxx.xxx.xxx.xxx | rpm123 | BP-RPM\COMD_CSO_ITM-AVAI_Def,BP-RPM\user

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

PowerShell在单独的文件中以两种模式获取子字符串

来自分类Dev

这两种在C中获取字符串输入的方法有什么区别?

来自分类Dev

在javascript中获取字符串之间的文本模式

来自分类Dev

在 HTML 中的静态模式之间获取字符串

来自分类Dev

Coldfusion-需要在开始和结束标签之间获取字符串数据

来自分类Dev

使用grep在两个特定单词/字符之间获取字符串的模式

来自分类Dev

在一行中搜索两种不同的字符串模式

来自分类Dev

获取字符串中两个子字符串之间的子字符串 [Javascript]

来自分类Dev

如何从bash中的两个模式之间提取字符串

来自分类Dev

如何从bash中的两个模式之间提取字符串

来自分类Dev

在Javascript中获取字符串中模式之间的单词

来自分类Dev

如何在Java中的两个字符之间获取字符串?

来自分类Dev

如何在Java中的两个字符之间获取字符串?

来自分类Dev

如何在Java中的两个字符之间获取字符串?

来自分类Dev

如何获取字符串中两个已定义字符之间的数据?r

来自分类Dev

C#获取字符串中两个字符之间的字符串

来自分类Dev

如何在字符串的两个相同字符之间获取字符串-在vb.net中

来自分类Dev

从相似唱歌之间的字符串中获取字符

来自分类Dev

Javascript中的RegExp:在两个字符串之间获取字符串

来自分类Dev

如何在Java中的<>之间获取字符串

来自分类Dev

在C#中获取字符串之间的值

来自分类Dev

获取字符串模式

来自分类Dev

在PHP的两个子字符串之间获取字符串?

来自分类Dev

如何在两个字符串之间获取字符串

来自分类Dev

在两个字符串之间获取字符串

来自分类Dev

PHP 在两个字符串之间获取字符串

来自分类Dev

如何从Powershell管道中获取字符串数组?

来自分类Dev

从文件中获取字符串的 PowerShell 问题

来自分类Dev

使用python提取两种模式之间的字符

Related 相关文章

  1. 1

    PowerShell在单独的文件中以两种模式获取子字符串

  2. 2

    这两种在C中获取字符串输入的方法有什么区别?

  3. 3

    在javascript中获取字符串之间的文本模式

  4. 4

    在 HTML 中的静态模式之间获取字符串

  5. 5

    Coldfusion-需要在开始和结束标签之间获取字符串数据

  6. 6

    使用grep在两个特定单词/字符之间获取字符串的模式

  7. 7

    在一行中搜索两种不同的字符串模式

  8. 8

    获取字符串中两个子字符串之间的子字符串 [Javascript]

  9. 9

    如何从bash中的两个模式之间提取字符串

  10. 10

    如何从bash中的两个模式之间提取字符串

  11. 11

    在Javascript中获取字符串中模式之间的单词

  12. 12

    如何在Java中的两个字符之间获取字符串?

  13. 13

    如何在Java中的两个字符之间获取字符串?

  14. 14

    如何在Java中的两个字符之间获取字符串?

  15. 15

    如何获取字符串中两个已定义字符之间的数据?r

  16. 16

    C#获取字符串中两个字符之间的字符串

  17. 17

    如何在字符串的两个相同字符之间获取字符串-在vb.net中

  18. 18

    从相似唱歌之间的字符串中获取字符

  19. 19

    Javascript中的RegExp:在两个字符串之间获取字符串

  20. 20

    如何在Java中的<>之间获取字符串

  21. 21

    在C#中获取字符串之间的值

  22. 22

    获取字符串模式

  23. 23

    在PHP的两个子字符串之间获取字符串?

  24. 24

    如何在两个字符串之间获取字符串

  25. 25

    在两个字符串之间获取字符串

  26. 26

    PHP 在两个字符串之间获取字符串

  27. 27

    如何从Powershell管道中获取字符串数组?

  28. 28

    从文件中获取字符串的 PowerShell 问题

  29. 29

    使用python提取两种模式之间的字符

热门标签

归档