Powershell:如何测试一行文本是否包含换行符或回车符 return?
Powershell: How to I test if a line of text contains line feed or carriage return?
如何测试文本文件的第一行是否以 \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
根据这些字符将您的文件转换为字符串数组。当您开始测试内容时,这些字符已被删除。如果您只是在寻找换行符的存在(您的条件似乎并不关心它遇到的是什么),那么测试 return 从 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
现在我将该文本作为一个字符串读入,并测试字符串的末尾是否有回车符 return 和换行符。请注意,我没有使用反引号转义。我正在使用正则表达式特殊字符。 (无论哪种方式都可以。只是需要注意的事情。)
(Get-Content c:\temp\test.txt -Raw) -match "\r\n$"
True
请注意,大多数写入文件的 PowerShell cmdlet 都会留下尾随换行符。因此,无论您有多少行,上面的代码片段对于 Set-Content
.
之类的内容都是正确的
如何测试文本文件的第一行是否以 \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
根据这些字符将您的文件转换为字符串数组。当您开始测试内容时,这些字符已被删除。如果您只是在寻找换行符的存在(您的条件似乎并不关心它遇到的是什么),那么测试 return 从 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
现在我将该文本作为一个字符串读入,并测试字符串的末尾是否有回车符 return 和换行符。请注意,我没有使用反引号转义。我正在使用正则表达式特殊字符。 (无论哪种方式都可以。只是需要注意的事情。)
(Get-Content c:\temp\test.txt -Raw) -match "\r\n$"
True
请注意,大多数写入文件的 PowerShell cmdlet 都会留下尾随换行符。因此,无论您有多少行,上面的代码片段对于 Set-Content
.