我希望在一组文件中看到包含Windows样式crlf
而不是Unix样式lf
的所有文件实例。这是我到目前为止所做的:
sls -Path src/*.cs -Pattern "`r`n" | group Path | select name
如果我搜索任何普通文本,但它没有找到回车符,这是有效的,即使(根据我在网上找到的所有内容),这是适当的Powershell转义序列,用于回车和换行。对于记录\r\n
也不起作用。
答案 0 :(得分:6)
sls
(Select-String
的别名)逐行工作,因此它在文件读取过程中已经处理(消耗)换行符,然后才能进行正则表达式匹配。
使用读取整个文件的内容,然后查找它:
Get-ChildItem -Path src/*.cs | ForEach-Object {
$contents = [System.IO.File]::ReadAllText($_.FullName)
if ($contents -cmatch '\r\n') {
$_
}
} | Group-Object Directory | Select-Object Name
这里使用的是 \r\n
而不是反引号,因为你正在为正则表达式引擎转义它们,而不是for powershell。