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

Powershell:如何测试一行文本是否包含换行符或回车符?,powershell,text,powershell-4.0,Powershell,Text,Powershell 4.0,如何测试文本文件的第一行是否以\r或\n结尾 我尝试了与以下类似的各种格式副本。我不确定导入powershell(文件的第一行)的字符串是否包含不可见字符。我还尝试使用StreamReader方法来阅读这行代码,但没有任何效果 $master = Get-Content $masterFilename | Select-Object -First 1 if ($master.Contains("\r|\n")) { write-host "you betcha, ther

如何测试文本文件的第一行是否以\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"
    }

谢谢。

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

If((Get-Content $masterFilename).Count -gt 1){"you betcha, there's a carriage return or line feed"}
我相信,一旦你看到它,我会再加上它。我想你可能需要把你的问题修改得更具体一点

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


如果你只是对一行好奇,那么如上所述,Raw将是开始的地方。考虑用十六进制表示的以下文本文件。它只是一个单词hello,后跟一个新行

68 65 6c 6c 6f 0d 0a
现在,我将把该文本作为一个字符串读取,并测试该字符串的末尾是否有回车符和换行符。请注意,我不是在用反勾号逃逸。我使用的是正则表达式特殊字符。(这两种方法都可以,只是需要注意。)


请注意,大多数写入文件的PowerShell cmdlet都会留下一个尾随的换行符。因此,无论您有多少行,对于Powershell中的
Set Content

之类的内容,上述代码片段都是正确的。换行符和回车符是
`n
`r
。如果文件中只有一行以回车符或换行符终止,会发生什么情况?感谢您的额外编辑。你的最后一个片段就是我的解决方案!我很感激你,马特。我找不到一个方法来解决这个问题——完整地加载一个大文件。似乎是使用
Get Content c:\temp\reallybigfile.csv-编码字节-ReadCount 1000 |选择对象-First 1
在我的例子中至少抓住了第一行,然后测试该数组的
10或13
,LF和CR的Dec代码可能是我的最终答案。@STWilson在这么大的范围内你到底在寻找什么
[System.IO.File]::ReadAllText()
或者
[System.IO.File]::ReadAllBytes()
比使用
获取内容要快([System.IO.File]::ReadAllBytes($aBigOne)|选择对象-前1000个)-包含10个
快速而优雅。如果第一行中没有匹配项,限制将保存对大型文件的无效搜索。
(Get-Content c:\temp\test.txt -Raw) -match "\r\n$"
True