Оставить дубликаты (трипликаты и т. д.) строк

Автор PiVV, 28 июня 2010, 18:47

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

dr.Faust

Блин, да там же пробел после скобок. Зачем точка? Пусть найдёт то что с пробелом.
Почему пробел валяет поиск.
Файл 1
"Аваль " - (после слова пробел) есть в тексте, но поиском не находится (галка РВ снята).
"[:alpha:]+" - находит все слова как и положено.
"[:alpha:]+ " - не находит ничего, хотя все словаему удовлетворяют. Наличеи пробела, а не другого пробельного символа, в конце каждого слова гарантируется предыдущей автозаменой на пробел.
"[:alpha:]+\ " - тот же эффект если пробел экранировать (хотя по идеи это не нужно, но и мешать не должно).
"[:alpha:]+[:space:]" - тоже ничего не находит.

[вложение удалено Администратором]
Свобода информации - свобода личности!

dr.Faust

Цитата: VlhOwn от 28 июня 2010, 23:46Специально показал случай, когда больше 2-х слов. Образец заканчивается пробелом.
А у меня не работает... :(
3.2.1
OOO320m18
9502
Свобода информации - свобода личности!

VlhOwn

То же самое, Саш. Win7.
Проверь образец "# ([:alpha:]+)( # \1)+ ". Ты регулярные выражения включил?

VlhOwn

Вот на твоем файле. 3-е совпадение.

[вложение удалено Администратором]

dr.Faust

Вобщим ищет только после сохранения...
Последовательность:
Копируем текст:
# абзац
# Абляз
# Аблязов
# Або
# Абросимов
# абсолют
# абсолютизация
# абсолютно
# абсолютный
# абсурдист
# абсцесс
# Абхазия
# Абхазский
# Авак
# Аваль
# аванс
# авансом
# авантюризм
# авантюрность
# авиастроение
# авиастроительный
# авиатранспорт
# авральный
# австриец
# Австрия

Выполняем автозамену.
"$" на " "
Пробуем найти "[:alpha:]+ " - совпадений нет.
Сохраняем файл. Открываем - всё находит.

[вложение удалено Администратором]
Свобода информации - свобода личности!

VlhOwn

Даже не пытался что-либо сохранять.

dr.Faust

Свобода информации - свобода личности!

VlhOwn

Нужно подтверждение от линуксоидов.

Рыбка Рио

ubuntu 12.04 + LibO3.6.0

PiVV

Крио
Свой-то вопрос я давно решил, спасибо bormant-у. Просто попутно вылезла проблема то ли с регулярными выражениями в поиске, то ли с самим поиском.

smaharbA


echo off
setlocal enabledelayedexpansion
chcp 1251 > nul
set file=%~dp0\next.txt
set str=
set /a n=0
for /f "delims=" %%i in ('sort /l C "%file%" ^| findstr /v /r /c:"^[ \t]*$"') do (
if "%%i"=="!str!" (
if !n! equ 1 <nul set /p a=%%i
set /a n=!n! + 1
) else (
if !n! gtr 1 echo. == !n!
set /a n=1
)
set str=%%i
)

Я конечно далек от мысли... (с)

Рыбка Рио

Кстати, в Calc можно сделать так: открыть файл txt в Calc (отсортировать столбец, если он ещё не отсортирован), в другом столбце ввести формулу массива:
{=IF(A1:A65000=A2:A65001;A1:A65000;"")}, потом отсортировать, получится список дубликатов, трипликаты в этом столбце станут дубликатами. Если применить формулу несколько раз, то получится список без повторений.
ubuntu 12.04 + LibO3.6.0

Рыбка Рио

Цитата: VlhOwn от 29 июня 2010, 01:31
Нужно подтверждение от линуксоидов.
На линуксе всё в порядке, слова с "[:alpha:]+ " (пробел на конце) находит, в OOO320m18, Go-OO 3.2 OOO320m12.
ubuntu 12.04 + LibO3.6.0

smaharbA

Я конечно далек от мысли... (с)

Рыбка Рио

#29
Кстати, после формулы {=IF(A1:A65000=A2:A65001;A1:A65000;"")} можно использовать фильтр и там поставить галочку "исключить дубликаты" (или макрос Список. Помогите оценить сложность.). А если использовать формулу 2 раза (3 раза, ...), то можно получить список всех триплетов (4, ...), исключая одинарные слова и дубли.

Кстати, по поводу регулярных выражений, можно использовать, вместо плюсика, запись типа [:alpha:]{3,} - находит все слова с тремя и более буквами.

Цитата: smaharbA от 29 июня 2010, 08:35
Вася ?= вася
В функции "=IF(A1=B1;1;0)" Вася и вася - разные слова (?).
ubuntu 12.04 + LibO3.6.0