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

时间:2016-02-12 01:45:35

标签: powershell text powershell-v4.0

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

谢谢。

1 个答案:

答案 0 :(得分:3)

Get-Content会根据这些字符将您的文件转换为sting数组。当您开始测试内容时,这些字符已被删除。如果您只是在寻找新行的存在(您的条件似乎并不关心它遇到的情况),那么测试从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

相关问题