gpt4 book ai didi

Powershell:如何测试一行文本是否包含换行符或回车符?

转载 作者:行者123 更新时间:2023-12-03 01:08:20 43 4
gpt4 key购买 nike

如何测试文本文件的第一行是否以\r 或\n 终止?

我尝试了类似于以下的各种演绎。我不确定导入到 powershell 中的字符串(文件的第一行)是否包含不可见字符。我也尝试使用 StreamReader 方法读取该行,但没有成功。

$master = Get-Content $masterFilename | Select-Object -First 1
if ($master.Contains("\r|\n"))
{
write-host "you betcha, there's a carriage return or line feed"
}

谢谢。

最佳答案

Get-Content 根据这些字符将您的文件转换为字符串数组。当您开始测试内容时,这些字符已被删除。如果您只是寻找换行符的存在(您的条件似乎并不关心它遇到什么),测试从 Get-Content 返回的行数就足够了。

If((Get-Content $masterFilename).Count -gt 1){"you betcha, there's a carriage return or line feed"}

我确信您看到后我会添加它。我认为您可能需要修改您的问题,使其更具体一些。

Get-Content 有一个 -Raw 开关,它将保留更接近您想要去的位置的新行分隔符。我不确定字符串方法是否包含支持通配符。我确实知道它不支持正则表达式。

<小时/>

如果您只是对一行感到好奇,那么如上所述,-Raw 将是您的起点。考虑以下以十六进制表示的文本文件。它只是单词 hello 后跟一个换行符。

68 65 6c 6c 6f 0d 0a

现在,我将该文本作为一个字符串读取,并测试字符串末尾是否有回车符和换行符。请注意,我没有用反引号转义。我正在使用正则表达式特殊字符。 (无论哪种方式都可以。只是需要注意一些事情。)

(Get-Content c:\temp\test.txt -Raw) -match "\r\n$"
True

请注意,大多数写入文件的 PowerShell cmdlet 都会留下尾随换行符。因此,无论您有多少行,上面的代码片段对于 Set-Content 之类的内容都是正确的。

关于Powershell:如何测试一行文本是否包含换行符或回车符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35353456/

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