CMD/BAT - [решено] узнать слово имя которого известно на паловину

Аватара пользователя
Ирина1986

CMD/BAT - [решено] узнать слово имя которого известно на паловину

Сообщение Ирина1986 »

Здравствуйте . можно ли написать такой bat например в файле 1.txt есть много много слов и строк.. как мне найти слова имя которых известно на половину и результат записать в файл txt в столбик.

и второй вопрос есть файл 1.txt в нем много много много строк как оставить только 50 строк а остальные строки удалить и все записать в log.txt

Спасибо.
Аватара пользователя
Georgio

Re: CMD/BAT - [решено] узнать слово имя которого известно на паловину

Сообщение Georgio »

Цитата Ирина1986:



можно ли написать такой 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 - [решено] узнать слово имя которого известно на паловину

Сообщение Ирина1986 »

Georgio, ой спасибо мальчики
Цитата Georgio:



привет от ComSpec и Georgio! С Рождеством!
CMD/BAT - [решено] узнать слово имя которого известно на паловину




нифига себе ему тоже привет чет потерялся он
Аватара пользователя
Ирина1986

Re: CMD/BAT - [решено] узнать слово имя которого известно на паловину

Сообщение Ирина1986 »

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 ) ) ) )
CMD/BAT - [решено] узнать слово имя которого известно на паловину




ужас так долго ищет....а как дополнить этот код что бы только 50 слов искал и все.. и записывал их в лог
Аватара пользователя
Ирина1986

Re: CMD/BAT - [решено] узнать слово имя которого известно на паловину

Сообщение Ирина1986 »

Ирина1986, Лучше воспользоваться специально написанными для работы с текстом утилитами. Например с помощью sed. Допустим надо найти все "сло..." и "...во" в 1.txt и все совпадения записать в 2.txt



Код:

Код: Выделить всё

@echo off
1>nul chcp 1251
sed -r "s/\s|\.|,/\n\r/g" 1.txt | sed -nr "/\bсло.+|.+во\b/p" > 2.txt

sed можно взять
здесь
Аватара пользователя
Ирина1986

Re: CMD/BAT - [решено] узнать слово имя которого известно на паловину

Сообщение Ирина1986 »

Foreigner, спасибо конечно но так не пойдет.



мне надо так как я постом выше написала
Аватара пользователя
Foreigner

Re: CMD/BAT - [решено] узнать слово имя которого известно на паловину

Сообщение Foreigner »

Цитата Ирина1986:



но так не пойдет
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 - [решено] узнать слово имя которого известно на паловину

Сообщение Ирина1986 »

Foreigner, спасибо конечно но так не пойдет.



мне надо так как я постом выше написала
Аватара пользователя
Ирина1986

Re: CMD/BAT - [решено] узнать слово имя которого известно на паловину

Сообщение Ирина1986 »

Цитата Ирина1986:



узнать слово имя которого известно на паловину
CMD/BAT - [решено] узнать слово имя которого известно на паловину




на паловину будет сложней.
Аватара пользователя
Ирина1986

Re: CMD/BAT - [решено] узнать слово имя которого известно на паловину

Сообщение Ирина1986 »

Цитата Ирина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
.
Ответить

Вернуться в «Скриптовые языки администрирования Windows»