Замена строки в файлах
Имеется куча файлов *.tab в папке, нужно в каждом файле заменить 11-ю строку
CoordSys NonEarth Units "m"
на
CoordSys Earth Projection 8, 1001, "m", 61.0333333333002, 0, 1, 2300000, -5509414.7
|
Цитата:
Цитата al-1k
Имеется куча файлов *.tab в папке »
|
Несколько образцов из этой кучи упакуйте в архив и приложите к сообщению, либо выложите на RGhost или Яндекс.Диск.
|
Цитата:
Цитата Iska
Несколько образцов из этой кучи »
|
Он раз в пол-года задаёт этот вопрос на разных форумах, а потом исчезает. Не стоит ждать ответа.
Да и без образцов вроде бы всё понятно - что вы хотите там увидеть?
|
Цитата:
Цитата Busla
Да и без образцов вроде бы всё понятно - что вы хотите там увидеть? »
|
Я лично хочу увидеть: - используемую кодировку;
- наличие BOM;
- тип конца строк;
- что приведённая строка именно одиннадцатая и именно с таким содержимым содержится во всех примерах.
Наконец, это избавит отвечающего от необходимости самолично изготавливать примеры файлов для проверки работоспособности кода.
Цитата:
Цитата Busla
Он раз в пол-года задаёт этот вопрос на разных форумах, а потом исчезает. »
|
Вот токмо там фигурирует двенадцатая строка :).
|
Код:
#File.WriteAllText - This method uses UTF-8 encoding without a Byte-Order Mark (BOM), so using the GetPreamble method will return an empty byte array.
$o = 'CoordSys NonEarth Units "m"'
$n = 'CoordSys Earth Projection 8, 1001, "m", 61.0333333333002, 0, 1, 2300000, -5509414.7'
dir C:\*.tab | Foreach {
$f = Get-Content $_.FullName
if($f[11].Contains($o)) {
$f[11] = $n
[IO.File]::WriteAllLines($_.FullName, $f)
}
}
|
Цитата:
Цитата Kazun
if($f[11].Contains($o)) { »
|
Почему не сразу на равенство?
|
Подумалось о доп. символах с начала и в конце строки, но равенство будет более точно.
|
Цитата:
Цитата Kazun
Подумалось о доп. символах с начала и в конце строки »
|
Спасибо, ясно. Я, в принципе, так и предполагал.
|
Iska, видите как всё прекрасно: можно не строить предположения о требованиях к кодировке, а просто задокументировать формат:
Код:
#File.WriteAllText - This method uses UTF-8 encoding without a Byte-Order Mark (BOM), so using the GetPreamble method will return an empty byte array.
|
Busla, какое отношение процитированное умолчание имеет к изложенному мною?
|
Время: 19:39.
© OSzone.net 2001-