![]() |
Маскирование многострочного текстового файла
Привет.
Есть некий тескстовый файл с неопределенным количеством одинаковых по длине строк. Задача, удалить (или заменить на ***) из каждой строки любые символы с 1 по 8 потом 40 по 248 и т.д. Как бы так регексп написать в реплейсе чтобы любые символы менял именно в нужном месте. Спасибо за помощь, ногами не бить в регекспах дуб дубом... |
Код:
(Get-Content file.txt) | Foreach {$_ -replace "^.{8}(.{31}).{208}(.*)",'$1$2'} | Out-File result.txt Код:
Get-Content file.txt | Foreach {$_.Substring(7,31) + $_.Substring(247)} | Out-File result.txt |
Цитата:
Как я понимаю ^ - начало строки . - любой символ {8} - до восьмого по счету, включительно или нет? ^.{8} - это $1? (.{31}) - 31 любой символ пропустить? .{208} - после 31-го символа любые символы до 208 (это получается $2?) Почему получается 208? Это 8+31+208 это 247 откуда ещё единица? Как получается $1$2 - это те символы что не попадают под выражение? Цитата:
Извиняюсь за занудство, но хочется разобраться чтобы в будущем понимать что к чему. Спасибо. |
.{8} - ровно 8
Код:
PS > "aaaaaa" -replace ".{8}" (.{31}) - это $1 (символы с 9 по 39) .{208} - ровно 208 (.*) - $2 (оставшиеся символы c 249) 248 - 40 = 208 Как получается $1$2 - это те символы что не попадают под выражение? - Все символы подпадают по выражение, но надо оставить символы,кроме с 1 по 8 потом 40 по 248 |
Шаблон:
Код:
^.{8}(.{31}).{208}(.*)
Примерная строка: Код:
0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789… всего 208 символов…0123456789012345 |
в таком случае если у нас строка 473 символа, а нам нужно удалить значения с 1 по 7, с 20 по 283, с 297 по 311, с 326 по 473.
то будет ^.{7}(.{13}).{283}(.{14}).{311}(.{15}).473?, $1$2$3 или я со скобками напортачил? |
Код:
$str.Substring(7,12)+$str.Substring(283,13)+$str.Substring(311,14) |
в математике запутался
^.{7}(.{12}).{283}(.{13}).{311}(.{14}).473?, $1$2$3 Код:
$file = Get-Content "C:\Scripts\file.txt" |
Код:
$str -replace "^.{7}(.{12}).{264}(.{13}).{15}(.{14}).{148}$",'$1$2$3' |
Странно, но -replace выводит тоже самое, что и изначально было в строке.
|
Цитата:
Цитата:
|
Да, вы как всегда правы. Спасибо большое!
|
Время: 09:55. |
Время: 09:55.
© OSzone.net 2001-