Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Поиск и замена текста

Ответить
Настройки темы
CMD/BAT - [решено] Поиск и замена текста

Новый участник


Сообщения: 30
Благодарности: 0

Профиль | Отправить PM | Цитировать


Уважаемые эксперты.

Просьба и помощи в написаниие командного файла: котолрый ищет текст в файле text.txt искомый текст находится в файле 1.txt и заменяет его на текст который находится в файле 2.txt соответственно.
Т.е. файлы 1 и 2 одинакового количества строк.

Спасибо заранее.

Отправлено: 19:29, 19-10-2010

 

Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата ajakzs:
конечно устроют »
вариант через AWK... при условии построчной замены 1.txt -> 2.txt
Код: Выделить весь код
@awk -v T1="1.txt" -v T2="2.txt"^
 "BEGIN{while(getline<T1){x=$0;getline<T2;a[x]=$0}};{for(v in a){gsub(v,a[v])};print}"^
 "text.txt" >"%~dpn0.tmp"
@copy /y "%~dpn0.tmp" "text.txt" >nul&& @del "%~dpn0.tmp"
Это сообщение посчитали полезным следующие участники:

Отправлено: 06:14, 21-10-2010 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 30
Благодарности: 0

Профиль | Отправить PM | Цитировать


Отличное решение!

Отправлено: 09:30, 21-10-2010 | #12


Аватара для Devils0411

Ветеран


Сообщения: 902
Благодарности: 51

Профиль | Отправить PM | Цитировать


Ребятки, а каким образом можно заменить SetupSourcePath = "\" на SetupSourcePath = "\XP\"
через утилитку chgstr, не получается лишь потому, что в указанных строках есть ковычки, т.е. при запуске chgstr "SetupSourcePath = "\" "" SetupSourcePath = "\XP\"" "txtsetup.sif", то утилита просто подвисает и это понятно почему.

-------
Скрипт автоустановки WINDOWSXP; Скрипт мультиустановки ОС


Отправлено: 15:57, 07-01-2012 | #13


Аватара для Devils0411

Ветеран


Сообщения: 902
Благодарности: 51

Профиль | Отправить PM | Цитировать


Решение проблемы нашел следующим способом:
Код: Выделить весь код
findstr /v /c:"SetupSourcePath" txtsetup.sif >>txtsetup1.sif

-------
Скрипт автоустановки WINDOWSXP; Скрипт мультиустановки ОС


Отправлено: 12:39, 08-01-2012 | #14


Ветеран


Сообщения: 900
Благодарности: 86

Профиль | Отправить PM | Цитировать


Здравствуйте. Пожалуйста, напишите мне, как в файле ChkDistr
читать дальше »
Код: Выделить весь код
MD Temp\Log
MD Temp\Log\Before
MD Temp\Log\After

Copy /Y Distr.ini Temp\Log >nul
If Exist Out.ini Copy /Y Out.ini Temp\Log >nul

Ver >Temp\Log\Nfo.txt
Echo %CD% >>Temp\Log\Nfo.txt

Copy /Y "%I386%\prodspec.ini" Temp\Log >nul
Copy /Y Temp\Folders.txt Temp\Log >nul

For %%I In (
	svcpack.inf
	svcpack.in_
	sysoc.inf
	sysoc.in_
	wbemoc.in_
	dosnet.inf
	drvindex.inf
	txtsetup.sif
) Do If Exist "%I386%\%%I" Copy /Y "%I386%\%%I" Temp\Log\Before >nul

Dir "%I386%" /OG /ON /S >Temp\Log\Before\I386.txt
заменить только одну строку номер 1
читать дальше »
Код: Выделить весь код
MD Temp\Log
на
читать дальше »
Код: Выделить весь код
If Not Exist Temp\Log MD Temp\Log
Все остальные строки в файле ChkDistr не трогать. Спасибо.

Отправлено: 09:26, 20-03-2012 | #15


Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


Здравствуйте.
Подскажите, пожалуйста, как сделать просто поиск текста в файле (не слова, а фразы с спец.символами) - если находит, то пишет лог, если нет - ничего не пишет.
Везде сложные примеры по замене текста, а мне это не надо, никак не догоню как сделать свою простую задачу

Отправлено: 14:19, 02-05-2012 | #16


Аватара для Дивер

Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить PM | Цитировать


Подскажите пожалуйста, а как можно переделать этот пример кода (в самом низу сообщения) для awk так, чтобы была не построчная замена, а мултилайновая?


В текстовом файле есть текст:

Код: Выделить весь код
text 001 blablalba
line
from

text XXX blablalba
line
from

text 002 blablalba
line
from

text 003 blablalba
line
from
в нем нужно найти строчки (одновременно):

Код: Выделить весь код
text XXX blablalba
line
from
и заменить его на слово "layout". Надеюсь понятно объяснил)


Пример кода несколькими постами ранее:
Код: Выделить весь код
@awk -v T1="1.txt" -v T2="2.txt"^
 "BEGIN{while(getline<T1){x=$0;getline<T2;a[x]=$0}};{for(v in a){gsub(v,a[v])};print}"^
 "text.txt" >"%~dpn0.tmp"
@copy /y "%~dpn0.tmp" "text.txt" >nul&& @del "%~dpn0.tmp"

Отправлено: 19:00, 07-08-2013 | #17


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата Дивер:
чтобы была не построчная замена, а мултилайновая »
в любом случае, AWK нужно сообщить, чем ограничивать мультилайновые блоки
например, пустыми строками, как в указанном примере:
Код: Выделить весь код
@awk -v RS="" -v T1="1.txt" -v T2="2.txt"^
 "BEGIN{while(getline<T1){x=$0;getline<T2;a[x]=$0}};{for(v in a){gsub(v,a[v])};print;print\"\"}"^
 "text.txt" >"%~dpn0.tmp"
@copy /y "%~dpn0.tmp" "text.txt" >nul&& @del "%~dpn0.tmp"
1.txt
Код: Выделить весь код
text XXX blablalba
line
from

text YYY blablalba
line
from
2.txt
Код: Выделить весь код
layout1

layout2

исходный TEXT.TXT
Код: Выделить весь код
text 001 blablalba
line
from

text XXX blablalba
line
from

text 002 blablalba
line
from

text YYY blablalba
line
from

text 003 blablalba
line
from
итоговый TEXT.TXT
Код: Выделить весь код
text 001 blablalba
line
from

layout1

text 002 blablalba
line
from

layout2

text 003 blablalba
line
from

Последний раз редактировалось amel27, 08-08-2013 в 06:15.

Это сообщение посчитали полезным следующие участники:

Отправлено: 06:08, 08-08-2013 | #18


Аватара для Дивер

Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить PM | Цитировать


amel27, огромнейшее Вам спасибо! Всё работает!

Отправлено: 16:10, 08-08-2013 | #19



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Поиск и замена текста

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Поиск текста в txt Centrinar AutoIt 5 23-07-2010 19:59
Разное - [решено] FoxPro 2.6 Замена фрагментов текста в txt-файле Pashka Программирование и базы данных 7 18-01-2010 19:20
Поиск текста и выполнение действий!!! Giena22 AutoIt 5 23-09-2009 20:21
C/C++ - Поиск текста в файлах student_po Программирование и базы данных 6 04-09-2009 23:33
Офис и Текст - Замена текста Котяра Программное обеспечение Windows 1 29-09-2008 13:51




 
Переход