CMD/BAT - [решено] узнать слово имя которого известно на паловину
-
Ирина1986
CMD/BAT - [решено] узнать слово имя которого известно на паловину
Здравствуйте . можно ли написать такой bat например в файле 1.txt есть много много слов и строк.. как мне найти слова имя которых известно на половину и результат записать в файл txt в столбик.
и второй вопрос есть файл 1.txt в нем много много много строк как оставить только 50 строк а остальные строки удалить и все записать в log.txt
Спасибо.
и второй вопрос есть файл 1.txt в нем много много много строк как оставить только 50 строк а остальные строки удалить и все записать в log.txt
Спасибо.
-
Georgio
Re: CMD/BAT - [решено] узнать слово имя которого известно на паловину
Цитата Ирина1986:
можно ли написать такой bat например в файле 1.txt есть много много слов и строк.. как мне найти слова имя которых известно на половину и результат записать в файл txt в столбик.
Ирина1986, определения понятия "слово" отличаются в лингвистике и информатике. Если для простоты принять за слово последовательный набор символов в тексте, разделённый символами пробела, табуляции и перехода на новую строку, то в рамках создания "чистого" пакетного файла не существует ничего лучше решений такого типа:
Код:
;
Код:
.
Этот метод имеет много недостатков:
1) в тексте не должно быть кавычек;
2) символы
Цитата:
,
,
Цитата:
;
,
Цитата:
=
будут разделять "слово" на несколько "слов";
3) "слова", содержащие символы
Цитата:
*
и
Цитата:
?
,
будут проигнорированы;
4) специальные символы в шаблоне поиска должны экранироваться символом
Цитата:
\
;
5) могут встретиться и другие нюансы.
Цитата Ирина1986:
и второй вопрос есть файл 1.txt в нем много много много строк как оставить только 50 строк а остальные строки удалить и все записать в log.txt
Код:
Ирина1986, привет от ComSpec и Georgio! С Рождеством!
можно ли написать такой bat например в файле 1.txt есть много много слов и строк.. как мне найти слова имя которых известно на половину и результат записать в файл txt в столбик.
CMD/BAT - [решено] узнать слово имя которого известно на паловину
Ирина1986, определения понятия "слово" отличаются в лингвистике и информатике. Если для простоты принять за слово последовательный набор символов в тексте, разделённый символами пробела, табуляции и перехода на новую строку, то в рамках создания "чистого" пакетного файла не существует ничего лучше решений такого типа:
Код:
Код: Выделить всё
@<"1.txt">"1.log" (
for /f "delims=" %%i in ('more^| findstr /ir "\<первая_половина_слова"') do @(
for %%j in (%%i) do @(
for /f %%k in ('echo "%%j"^| findstr /ir "^\"первая_половина_слова.*\""') do @(
echo %%~k
)
)
)
);
Код:
Код: Выделить всё
@<"1.txt">"1.log" (
for /f "delims=" %%i in ('more^| findstr /ir "вторая_половина_слова\>"') do @(
for %%j in (%%i) do @(
for /f %%k in ('echo "%%j"^| findstr /ir "\".*вторая_половина_слова\"$"') do @(
echo %%~k
)
)
)
).
Этот метод имеет много недостатков:
1) в тексте не должно быть кавычек;
2) символы
Цитата:
,
,
Цитата:
;
,
Цитата:
=
будут разделять "слово" на несколько "слов";
3) "слова", содержащие символы
Цитата:
*
и
Цитата:
?
,
будут проигнорированы;
4) специальные символы в шаблоне поиска должны экранироваться символом
Цитата:
\
;
5) могут встретиться и другие нюансы.
Цитата Ирина1986:
и второй вопрос есть файл 1.txt в нем много много много строк как оставить только 50 строк а остальные строки удалить и все записать в log.txt
CMD/BAT - [решено] узнать слово имя которого известно на паловину
Код:
Код: Выделить всё
@<"1.txt">"log.txt" (
for /l %%i in (1 1 50) do @(
set/p x=
if defined x (cmd/v/c echo.!x!) else (echo.)
set x=
)
)Ирина1986, привет от ComSpec и Georgio! С Рождеством!
-
Ирина1986
Re: CMD/BAT - [решено] узнать слово имя которого известно на паловину
Georgio, ой спасибо мальчики
Цитата Georgio:
привет от ComSpec и Georgio! С Рождеством!
нифига себе ему тоже привет чет потерялся он
Цитата Georgio:
привет от ComSpec и Georgio! С Рождеством!
CMD/BAT - [решено] узнать слово имя которого известно на паловину
нифига себе ему тоже привет чет потерялся он
-
Ирина1986
Re: CMD/BAT - [решено] узнать слово имя которого известно на паловину
Georgio,
Цитата Georgio:
@"1.log" ( for /f "delims=" %%i in ('more^| findstr /ir "вторая_половина_слова\>"') do @( for %%j in (%%i) do @( for /f %%k in ('echo "%%j"^| findstr /ir "\".*вторая_половина_слова\"$"') do @( echo %%~k ) ) ) )
ужас так долго ищет....а как дополнить этот код что бы только 50 слов искал и все.. и записывал их в лог
Цитата Georgio:
@"1.log" ( for /f "delims=" %%i in ('more^| findstr /ir "вторая_половина_слова\>"') do @( for %%j in (%%i) do @( for /f %%k in ('echo "%%j"^| findstr /ir "\".*вторая_половина_слова\"$"') do @( echo %%~k ) ) ) )
CMD/BAT - [решено] узнать слово имя которого известно на паловину
ужас так долго ищет....а как дополнить этот код что бы только 50 слов искал и все.. и записывал их в лог
-
Ирина1986
Re: CMD/BAT - [решено] узнать слово имя которого известно на паловину
Ирина1986, Лучше воспользоваться специально написанными для работы с текстом утилитами. Например с помощью sed. Допустим надо найти все "сло..." и "...во" в 1.txt и все совпадения записать в 2.txt
Код:
sed можно взять
Код:
Код: Выделить всё
@echo off
1>nul chcp 1251
sed -r "s/\s|\.|,/\n\r/g" 1.txt | sed -nr "/\bсло.+|.+во\b/p" > 2.txtsed можно взять
здесь
-
Ирина1986
Re: CMD/BAT - [решено] узнать слово имя которого известно на паловину
Foreigner, спасибо конечно но так не пойдет.
мне надо так как я постом выше написала
мне надо так как я постом выше написала
-
Foreigner
Re: CMD/BAT - [решено] узнать слово имя которого известно на паловину
Цитата Ирина1986:
но так не пойдет
Не подходит sed (он работает гораздо быстрее батника) или надо первые 50 вхождений? Вот первые 50:
Код:
но так не пойдет
CMD/BAT - [решено] узнать слово имя которого известно на паловину
Не подходит sed (он работает гораздо быстрее батника) или надо первые 50 вхождений? Вот первые 50:
Код:
Код: Выделить всё
@echo off
1>nul chcp 1251
sed -r "s/\s|\.|,/\n/g" 1.txt | sed -nr "/\bсло.+|.+во\b/p" | sed "50q" > 2.txt-
Ирина1986
Re: CMD/BAT - [решено] узнать слово имя которого известно на паловину
Foreigner, спасибо конечно но так не пойдет.
мне надо так как я постом выше написала
мне надо так как я постом выше написала
-
Ирина1986
Re: CMD/BAT - [решено] узнать слово имя которого известно на паловину
Цитата Ирина1986:
узнать слово имя которого известно на паловину
на паловину будет сложней.
узнать слово имя которого известно на паловину
CMD/BAT - [решено] узнать слово имя которого известно на паловину
на паловину будет сложней.
-
Ирина1986
Re: CMD/BAT - [решено] узнать слово имя которого известно на паловину
Цитата Ирина1986:
просто там столько много ссылок что я не смогла разобраться что скачивать
просто там столько много ссылок что я не смогла разобраться что скачивать
CMD/BAT - [решено] узнать слово имя которого известно на паловину
sed for windows - Поиск в Google
→ sed for Windows
или GnuWin - Browse /sed/4.2.1 at SourceForge.net
→ и то, и другое приводят к sed-4.2.1-setup.exe
.