Perpend X Количество строк в файле с PowerShell - PullRequest
1 голос
/ 16 ноября 2010

Я застрял в проблеме, над которой работаю с текстовым файлом.Файл представляет собой простой текстовый файл с некоторыми добавленными датами, другими словами, простой файл журнала.Моя проблема заключается в следующем: «Мне нужно закомментировать несколько строк, которые передаются в качестве параметра».Часть, над которой я зациклен, - это фактическое закомментированное количество строк X (скажем, добавлен знак #).Я могу читать и писать файлы, читать строки и записывать строки с помощью строки поиска, но я не могу понять, как отредактировать число строк X и оставить остальные строки в покое.

PS На самом деле не имеет значения, находятся ли строки в конце файла или в начале, хотя было бы неплохо понять метод добавления в начало или конец

Ответы [ 2 ]

2 голосов
/ 16 ноября 2010
gc .\foo.txt | select -First 3 | %{ "#{0}" -f $_ }
gc .\foo.txt | select -Skip 3
0 голосов
/ 16 ноября 2010

Если я правильно понял, этот шаблон должен работать для вас:

(Get-Content my.log) | .{
    begin{
        # add some lines to the start
        "add this to the start"
        "and this, too"
    }
    process{
        # comment out lines that match some condition
        # in this demo: a line contains 'foo'
        # in your case: apply your logic: line counter, search string, etc.
        if ($_ -match 'foo') {
            # match: comment out it
            "#$_"
        }
        else {
            # no match: keep it as it is
            $_
        }
    }
    end {
        # add some lines to the end
        "add this to the end"
        "and this, too"
    }
} |
Set-Content my.log

Тогда файл журнала:

bar
foo
bar
foo

преобразуется в:

add this to the start
and this, too
bar
#foo
bar
#foo
add this to the end
and this, too

Примечание: для очень больших файлов используйте похожий, но немного другой шаблон:

Get-Content my.log | .{
    # same code
    ...
} |
Set-Content my-new.log

, а затем переименуйте my-new.log в my.log. Если вы все равно собираетесь писать в новый файл, используйте сначала второй, более эффективный шаблон.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...