如何在powershell中读取文件而不拖尾新行

如何在powershell中读取文件而不拖尾新行,powershell,windows-10,Powershell,Windows 10,我需要匹配一个没有新行字符的模式。目标文件看起来像: $file -replace "[\s]+","" | ForEach-Object { $_ -replace $pattern.trimEnd(),"black-ink-mark"} 试验 我想用从文件中获取的内容替换测试。在记事本++中,只有一行文字,即记事本++左侧只有“1”。我尝试了以下方法: PS D:\> $test = get-content tree.txt -raw PS D:\> $test test PS

我需要匹配一个没有新行字符的模式。目标文件看起来像:

$file -replace "[\s]+","" | ForEach-Object { $_ -replace $pattern.trimEnd(),"black-ink-mark"}
试验

我想用从文件中获取的内容替换测试。在记事本++中,只有一行文字,即记事本++左侧只有“1”。我尝试了以下方法:

PS D:\> $test = get-content tree.txt -raw
PS D:\> $test
test
PS D:\> $test > tree.txt
PS D:\> $test.trim() > tree.txt
PS D:\> $test.trimEnd() > tree.txt
PS D:\> $test.replace("`n","")
test
PS D:\> $test.replace("t","f")
fesf
PS D:\> $test.replace("\n","")
test
PS D:\> $test.replace("`n","") > tree.txt
Set-Content -NoNewline $test tree.txt
但它仍然在结尾添加了一行新词。最后一条语句没有追加新行,但我希望在变量中有相同的输出。 最后一个命令类似于:

$file -replace "[\s]+","" | ForEach-Object { $_ -replace $pattern.trimEnd(),"black-ink-mark"}
$pattern不应包含任何换行符

更新:示例 我需要用黑色墨水标记替换tree.txt文件中的测试

PS D:\>获取content tree.txt
测试
PS D:\>获取内容树2.txt
测试
PS D:\>$pattern=获取内容树2.txt-原始
PS D:\>$file=get content tree.txt-raw
PS D:\>$file-replace“[\s]+”,“| ForEach对象{$\u-replace{$pattern.replace(''n','')},”,“黑色墨水标记”}
测试
PS D:\>
来自@moshe perez

这项工作:

$file.Replace($pattern,"black-ink-mark")

如果您只想从文件中读取第一行,而不需要后续换行符,请使用
$test=Get Content tree.txt | Select Object-First 1
I did
$pattern=Get Content output.txt | Select Object-First 1>tree2.txt
,它仍会在tree2文件中输出一个换行符。更新问题
总是添加一个换行符。使用
Out File-NoNewline
Set Content-NoNewline
,但请注意,Windows PowerShell中的输出编码不同,在其他方面,cmdlet仅在字符串类型的输入中表现相同。问题不在于模式文件,因为该文件的内容来自poweshell之外,即。,我可以删除额外的那一行(从记事本++)。在上面的示例中,从$pattern(tree2)文件获取内容会附加一行新行,即使原始文件没有新行。我需要从变量
Get Content-Raw
中删除多余的一行,它不会在读取时添加换行符,但您可以随时根据需要对其进行修剪。请注意,不能有意义地将脚本块(
{…}
)作为第一个RHS操作数传递给
-replace
''n'
是字符串文字,因为它被括在单引号中。