Войти

Показать полную графическую версию : [решено] Подсчет слов и нахождение заданного слова, замена и его замена на другое.


zeroua
11-06-2014, 11:15
Здравствуйте все, а каким образом посчитать и вывести на экран количество появления заданного слова без учета регистра, у меня вроде получилось вот таким вот скриптом, а ещё мне нужно заменить все слова the на другое заданное слово и перезаписать текстовый документ, помогите с этой нетривиальной для меня задачей.

@echo off

set /a count=0

for /f "usebackq delims=" %%a in ("text.txt") do for %%i in (%%a) do (
if %%i == the set /a count+=1
)

echo count : %count%

pause

gora
12-06-2014, 10:45
посчитать и вывести на экран количество появления заданного слова без учета регистра, ... а ещё мне нужно заменить все слова the на другое заданное слово и перезаписать текстовый документ »
Подобную задачу решал с помощью vbs скрипта (ибо bat неудобен для подобных задач) в составе SetTools (http://forum.oszone.net/thread-172130.html), посмотрите там скрипт, может подойдет.

Georgio
12-06-2014, 11:18
без учета регистра »

Тогда так: if /i %%i==the set /a count+=1.

zeroua
12-06-2014, 11:39
Georgio, угумсь тут я знаю, а вот реализации замены текста средствами командной строки более чем неудобная штука.

Подобную задачу решал с помощью vbs скрипта (ибо bat неудобен для подобных задач) в составе SetTools, посмотрите там скрипт, может подойдет. »
Спасибо за наводку но хотелось бы конечно справится именно через bat,

for /f "usebackq delims=" %%a in ("1.txt") do (
set strrr=%%a
set tmpr=%strrr:word=nut%
echo.%tmpr%
)

А если как-то так?

gora
12-06-2014, 11:55
Спасибо за наводку »
Ну тогда я Вам еще уточню задачу: сколько слов the в этой строке?
The then the, nothe the: thethethe the

Georgio
12-06-2014, 12:22
А если как-то так? »


Да не вопрос:

for /f "usebackq delims=" %%a in ("1.txt") do (
set strrr=%%a
call echo %%strrr:word=nut%%>>"2.txt"
)

.

Только "подводных камней" будет куча. Один "камень" даже "выходит на поверхность моря": регистр учитываться будет. Если текст не секретный, то выложите этот файл в архиве и что на что менять напишите.

zeroua
12-06-2014, 12:32
Georgio, это абстрактная задача текстовый документ не имеет значения, я использовал с таким содержанием.

zzz the the
aaa aaa aaa
the
the
the
aaa

Georgio
12-06-2014, 13:29
@echo off& :команда "echo off" обязательна
set "word_1=the"
set "word_2=мама"
(
for /f "usebackq delims=" %%i in ("1.txt") do (
for %%j in (%%i) do (
if /i "%%j"=="%word_1%" (
set /p"=%word_2% "<nul
) else (
set /p"=%%j "<nul
)
)
echo.
)
)>"2.txt"
exit /b

zeroua
13-06-2014, 14:38
Georgio, все прекрасно но он создает новый файл, а мне по условию задачи лучше что бы он перезаписал тот же файл, можно это реализовать.

Georgio
13-06-2014, 15:22
@echo off& :команда "echo off" обязательна
set "word_1=the"
set "word_2=мама"
(
for /f "usebackq delims=" %%i in ("1.txt") do (
for %%j in (%%i) do (
if /i "%%j"=="%word_1%" (
set /p"=%word_2% "<nul
) else (
set /p"=%%j "<nul
)
)
echo.
)
)>"2.txt"
move "2.txt" "1.txt">nul
exit /b




© OSzone.net 2001-2012