gpt4 book ai didi

regex - 在 PowerShell 中仅打印非空行

转载 作者:行者123 更新时间:2023-12-02 01:49:03 26 4
gpt4 key购买 nike

我有一个包含多行的文本文件。许多都是空白的,至少我是通过查看文件内容来假设的。我只想编写/打印包含文本的行。我遇到麻烦了。这是我的代码:

$test = Get-Content -Path '.\dummy-file.html'

# convert html file to text, save only the relevant info (no tags)
foreach ($line in $test) {
$newline = $line -split ("<.*?>") -split ("{.*?}") # remove html and css tags
$newline -replace "`n","" # thought this would get rid of blank lines. it doesn't
$newline >> "test-ouput.txt" # save to new file
}

# read text file, print only lines with text
$test.ForEach({$_ -notmatch "`n"})

上面的方法不起作用,仅将 bool 值打印到控制台,即使这样,它们的值也是错误的。考虑到 $test 的前 10 行,正确的输出应该只有两行文本,其中八行是空白。但是,会打印空白行。

我是正则表达式的新手,假设它与此有关。我对PowerShell的理解也是新手。谢谢。

最佳答案

不使用正则表达式的简单解决方案是使用 String.IsNullOrWhiteSpace(String) Method :

Get-Content -Path '.\dummy-file.html' | Where-Object {
-not [string]::IsNullOrWhiteSpace($_)
}

它可以读作,所有行,其中此行不是空字符串>空白

如果您想使用正则表达式进行测试,可以使用 -match operatorregex 中的 \S 匹配任何非空白字符。

Get-Content -Path '.\dummy-file.html' | Where-Object {
$_ -match '\S'
}

下面的例子:

PS /> @'
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed

a, luctus sit amet augue. Aliquam finibus,

felis luctus tincidunt dapibus, justo tellus finibus risus, et

in pharetra risus. Lorem ipsum dolor
'@ -split '\r?\n' | Where-Object { -not [string]::IsNullOrWhiteSpace($_) }

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed
a, luctus sit amet augue. Aliquam finibus,
felis luctus tincidunt dapibus, justo tellus finibus risus, et
in pharetra risus. Lorem ipsum dolor

关于regex - 在 PowerShell 中仅打印非空行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70538990/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com