STW*_*son 8 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, there's a carriage return or line feed"
}
Run Code Online (Sandbox Code Playgroud)
谢谢你。
Get-Content根据这些字符将您的文件转换为 sting 数组。当您开始测试内容时,这些字符已被删除。如果您只是在寻找换行符的存在(您的条件似乎并不关心它遇到什么),那么测试从返回的行数Get-Content就足够了。
If((Get-Content $masterFilename).Count -gt 1){"you betcha, there's a carriage return or line feed"}
Run Code Online (Sandbox Code Playgroud)
一旦你看到它,我相信我会添加它。我认为您可能需要修改您的问题以使其更具体一些。
Get-Content有一个-Raw开关可以保留新的行分隔符,它更接近你想要去的地方。我不确定字符串方法是否包含支持通配符。我知道它不支持正则表达式。
如果您只是对一行感到好奇,那么如上所述-Raw将是开始的地方。考虑以下以十六进制表示的文本文件。它只是单词 hello 后跟一个换行符。
68 65 6c 6c 6f 0d 0a
Run Code Online (Sandbox Code Playgroud)
现在我将该文本作为一个字符串读取并测试字符串的末尾是否有回车和换行符。请注意,我没有用反引号逃避。我正在使用正则表达式特殊字符。(无论哪种方式都可以。只是需要注意的事情。)
(Get-Content c:\temp\test.txt -Raw) -match "\r\n$"
True
Run Code Online (Sandbox Code Playgroud)
请注意,大多数写入文件的 PowerShell cmdlet 都会留下一个尾随换行符。所以无论你有多少行,上面的代码片段对于类似Set-Content.
| 归档时间: |
|
| 查看次数: |
12183 次 |
| 最近记录: |