使用 Powershell 删除每个 .txt 文件的第一个字符

问题描述 投票:0回答:1

我的文件夹中有 50 个文件需要加载到 SQL。 在大多数文件(但不是全部)中,第一个字符是我想删除的主题标签,因为它给列映射带来了困难。

所以我不想循环遍历文件的所有行,只需删除第一个字符(以防它是主题标签)并保存文件。

所以我还需要分析第一个字符是否是主题标签。如果是,那么应该将其删除,如果不是,那么我应该简单地退出该文件。

最快的方法是什么?

我尝试过这些:

    $Path = "D:\folder\myfolder" $OldText = "#" $NewText = ""

--> 这将循环遍历所有文件以查找主题标签

(Get-Content 'D:\folder\myfoldermyfile.txt' -raw) -replace '^.' | Set-Content 'D:\folder\myfoldermyfile.txt'
--> 这删除了每行的第一个字符,所以对我来说不好

我是 PS 初学者,因此感谢任何帮助。

string powershell csv replace txt
1个回答
0
投票

因为您的代码使用

-raw
开关
Get-Content
,您将收到一个多行字符串,您可以在其上执行替换。
在您的情况下,将每个文件作为字符串数组读取并仅替换该数组中的第一行会更容易。

类似这样的:

$Path = 'D:\folder\myfolder'
foreach ($file in (Get-ChildItem -Path $Path)) {
    $content = Get-Content -Path $file.FullName  # read each file as array of lines
    $content[0] = $content[0] -replace '^#'      # remove the hash character in the first line only
    $content | Set-Content -Path $file.FullName
}
© www.soinside.com 2019 - 2024. All rights reserved.