【问题标题】:powershell extracting data from strings or other suggestionspowershell 从字符串或其他建议中提取数据
【发布时间】:2019-01-02 19:54:20
【问题描述】:

我正在编写一个脚本,它基本上从另一个工具生成的 excel 文档中读取数据。它以下列格式列出文件年龄。我的问题是我想处理每个单元格值并根据该值更改单元格颜色。所以任何超过 1 年的东西都会变成红色,超过 90 天就会变成黄色\橙色。

所以经过一番研究,我选择使用if 语句来确定它何时大于 0 年,这似乎工作正常,但是当我到达天数部分时,我不确定如何提取 JUST当您到达y 时,每个单元格中d 左侧的数字部分如果它刚刚停止,或者只有在$_ 包含d 时才可能只读取左侧数字,那么我可以进一步处理如果那值为-gt 90?我不确定如何仅当可变长度字符串是字符左侧的数字时才提取它们。我考虑使用以下方法的组合来查找字符并返回 y 或其他内容。

Find character position and update file name

可能的年龄格式:

  • 13y170d
  • 3y249d
  • 8h7m
  • 1y109d
  • 1y109d
  • 1y109d
  • 5d22h
  • 3y281d
  • 3y184d
  • 11y263d
  • 7m25s
  • 1 小时 14 分

    [regex]$years = "\d{1,3}[0-9]y"

    [regex]$days_90 = "\d{0,3}[0-9]d"

根据年龄(年)有条件地格式化/着色行

if ( $( A$_ -match "$years") -eq $True ) {
$($test_home).$("Last Accessed") | ForEach-Object { $( $($_.Contains("y") -eq $True ) { New-ConditionalText -Text Red } }

根据年龄(90 天以上)有条件地格式化/着色行

if ( $( A$_ -match "$days_90") -eq $True ) { New-ConditionalText -Text Yellow }

【问题讨论】:

    标签: powershell replace find character


    【解决方案1】:

    您所追求的是积极的前瞻和后瞻。它有效地获取两个字符或集合之间的文本。如果您有一组格式一致的数据可供使用,那真的很方便。

    [regex]$days_90 = '(?<=y).*?(?=d)'
    
    • . 匹配任何不带换行符的字符。
    • * 匹配 0 个或多个前面的标记。
    • ? 使正则表达式变得懒惰并尝试尽可能少地匹配。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-03
      • 2021-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多