Автор Тема: [Данные, строки] Поиск и замена строки в текстовом файле.  (Прочитано 14345 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Эта тема содержит сообщение, помеченное как лучший ответ. Кликните здесь для перехода к этому сообщению.

at

  • Гость
Версия AutoIt: 3.3.6.1

Описание: Добрый день, Уважаемое Сообщество. Прошу помочь разобраться в вопросе замены строки в текстовом файле. Нужно найти в текстовом файле строку: 10.10.1.20 и заменить ее на 10.10.1.30

Русское сообщество AutoIt


Оффлайн Zaramot [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1160
  • Репутация: 656
  • Пол: Мужской
  • I ♥ AutoIt
    • Награды
  • Версия AutoIt: 3.3.8.1
Можно так:
Код: AutoIt [Выделить]
$File = @ScriptDir & '\user.txt'
$Read = FileRead($File)
$Replace = StringReplace($Read, '10.10.1.20', '10.10.1.30')
FileDelete($File)
FileWrite($File, $Replace)


at

  • Гость
Спасибо, работает. А через StringRegExpReplace можно еще пример показать ?

Помечен как лучший ответ пользователем Отправлен Апрель 12, 2019, 14:18:52

Оффлайн Zaramot [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1160
  • Репутация: 656
  • Пол: Мужской
  • I ♥ AutoIt
    • Награды
  • Версия AutoIt: 3.3.8.1
Код: AutoIt [Выделить]
$File = @ScriptDir & '\user.txt'
$Read = FileRead($File)
$Replace = StringRegExpReplace($Read, '10.10.1.20', '10.10.1.30')
FileDelete($File)
FileWrite($File, $Replace)


Русское сообщество AutoIt

Re: [Данные, строки] Поиск и замена строки в текстовом файле.
« Ответ #3 Отправлен: Январь 04, 2012, 22:51:23 »

Оффлайн madmasles [?]

  • Глобальный модератор
  • *
  • Сообщений: 7790
  • Репутация: 2317
  • Пол: Мужской
  • Награды За модерирование форума
    • Награды
  • Версия AutoIt: 3.3.x.x
at  [?]
Цитировать
А через StringRegExpReplace
Попробуйте так.
Код: AutoIt [Выделить]
$sNameSection = '"ServerAddress"'
$sReplace = '100.100.100.100'
$sText = FileRead(@ScriptDir & '\user.txt')

$sNewText = StringRegExpReplace($sText, '(?si)^(.*?' & $sNameSection & '>.*?<value>).*?(</value>.*?)$', '${1}' & $sReplace & '$2')
If @extended = 2 Then
    $hFile = FileOpen(@ScriptDir & '\1_user.txt', 2)
    FileWrite($hFile, $sNewText)
    FileClose($hFile)
Else
    MsgBox(16, 'Error', 'StringRegExpReplace')
EndIf


at

  • Гость
madmasles, спасибо за пример, начинаю понемногу доходить.

Оффлайн kristow13 [?]

  • Новичок
  • *
  • Сообщений: 76
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Я хочу в файле не txt формата заменить кусок текста.
Если я открываю этот файл блокнотом, то все содержимое видно в виде текста без кракозябр.
Вручную я делал замену через notepad++.
Хочу сделать перезапись текста в файле через autoit.
Пробовал код из этой темы, так у меня первый раз сработала замена текста, а потом перестает это делать.... Хотя тренировался с простым txt файлом, проблем вообще нету...

Вопрос: Возможно ли делать замену в файле без удаления и по новой сохранения этого измененного файла?  :think:

Оффлайн madmasles [?]

  • Глобальный модератор
  • *
  • Сообщений: 7790
  • Репутация: 2317
  • Пол: Мужской
  • Награды За модерирование форума
    • Награды
  • Версия AutoIt: 3.3.x.x
kristow13,
Это Стол заказов и данная тема решена. Задавайте вопрос в другом месте.

Русское сообщество AutoIt

Re: [Данные, строки] Поиск и замена строки в текстовом файле
« Ответ #7 Отправлен: Сентябрь 10, 2014, 21:22:06 »

Оффлайн Bingo888 [?]

  • Новичок
  • *
  • Сообщений: 20
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.14.0
Добрый день! у меня почемуто $sRead=FileRead($File) не считивает файл в чом может быть причина?

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 8013
  • Репутация: 2304
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
Bingo888  [?]
Цитировать
в чом может быть причина?
Файл не найден.
Файл используется.
Файл пуст.


Правила, Поиск, Супер тема


AutoIt is simple, subtle, elegant.


«Не оказываю тех. поддержку через ПМ/ICQ, и по электронной почте - для этого есть форум. (C)»
«Законы Мэрфи неоспоримы!»


Мои работы

Оффлайн Bingo888 [?]

  • Новичок
  • *
  • Сообщений: 20
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.14.0
#include <File.au3>
#include <Array.au3>
$File = 'd:\\DOVIDKA.RTF'
$sTextOld1 ='ВІДДІЛЕННЯ'
$sTextOld2 ='ОБЛАСТІ'


if $File =-1 Then
   MsgBox(4096, "Ошибка", "Невозможно открить файл.")
Exit
  Endif

$sRead = FileRead($File)
$Repleace = StringReplace($sRead, $sTextOld1, $sTextOld2)
FileDelete($File)
FileWrite($File, $Repleace)


Вот есть проврка на то используется ли файл, и он не пустой создается файл пустой рядом с исходным!


Добавлено: Март 20, 2019, 15:10:12
Что не так в скрипте?

Оффлайн ЭйчЭйч [?]

  • Сообщений: 119
  • Репутация: -6
    • Награды
  • Версия AutoIt: 3.3.14.0
Bingo888, указан неправильно путь, или потому что он RTF.

Оффлайн Bingo888 [?]

  • Новичок
  • *
  • Сообщений: 20
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.14.0
rtf тут точно не причём и путь указан правильно !!!!

Русское сообщество AutoIt

Re: [Данные, строки] Поиск и замена строки в текстовом файле
« Ответ #12 Отправлен: Март 20, 2019, 15:38:58 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
5 Ответов
16440 Просмотров
Последний ответ Декабрь 05, 2012, 16:40:30
от AZJIO
2 Ответов
6343 Просмотров
Последний ответ Декабрь 28, 2010, 09:19:53
от gregaz
6 Ответов
4416 Просмотров
Последний ответ Август 14, 2011, 00:54:38
от at
2 Ответов
2483 Просмотров
Последний ответ Декабрь 06, 2013, 04:30:27
от joiner
2 Ответов
1871 Просмотров
Последний ответ Март 13, 2014, 20:55:32
от bescom
2 Ответов
2719 Просмотров
Последний ответ Июль 22, 2014, 17:29:19
от sasha-ld
4 Ответов
2135 Просмотров
Последний ответ Сентябрь 12, 2014, 10:40:11
от kristow13
154 Ответов
40747 Просмотров
Последний ответ Март 31, 2016, 23:48:18
от Dk
5 Ответов
1530 Просмотров
Последний ответ Август 09, 2016, 11:36:46
от InnI
3 Ответов
591 Просмотров
Последний ответ Август 21, 2017, 13:03:00
от gerkuless