如何从文件读取而不在Powershell中尾随新行

时间:2018-12-06 04:44:31

标签: powershell windows-10

我需要匹配一个没有换行符的模式。目标文件如下所示:

测试

我想用从文件中获取的内容替换测试。在notepad ++中,一行中有文本,即,notepad ++的左侧只有“ 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 文件中的 test 替换为 black-ink-mark

PS D:\> get-content tree.txt
<element>test</element>
PS D:\> get-content tree2.txt
test
PS D:\> $pattern = get-content tree2.txt -raw
PS D:\> $file = get-content tree.txt -raw
PS D:\> $file -replace "[\s]+","" | ForEach-Object { $_ -replace {$pattern.replace('`n','')},"black-ink-mark"}
<element>test</element>
PS D:\>

1 个答案:

答案 0 :(得分:0)

来自@moshe perez。

这有效:

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