Эксел парень, который иногда превращается в автоматизацию powershell через vba.Возврат дубликатов имен (включая частичные совпадения)
Я попытался решить https://stackoverflow.com/q/36538022/641067 (теперь закрыт) и не смог попасть туда с моим основным знанием powershell и googlefu.
В сущности проблема ФП представлены в:
- Есть список имен в виде текстового файла.
- Цель состоит в том, чтобы отображать только те имена, которые встречаются хотя бы один раз (так что отбросьте уникальные имена, см. Пункт (3)).
- Имена, встречающиеся хотя бы один раз, включают частичные совпадения, то есть Will и William можно рассматривать как дубликаты и должны быть сохранены. Принимая во внимание, что Билл не является дубликатом William.
Я пробовал различные подходы, в том числе
Group
Compare-Object
пример ниже
Но я был загнаны в части (3). Я подозреваю, что для этого требуется петля, но мне любопытно, существует ли прямой подход Powershell
,
Ждем ваших слушаний от экспертов.
что я пытался
$a = Get-Content "c:\temp\in.txt"
$b = $a | select -unique
[regex] $a_regex = ‘(?i)(‘ + (($a |foreach {[regex]::escape($_)}) –join “|”) + ‘)’
$c = $b -match $a_regex
Compare-object –referenceobject $c -IncludeEqual $a
Считаете ли вы * Andrew * and * Allice * дубликатами? Или, другими словами, сколько должно быть LCS или сходство? –
Если одно текстовое поле полностью помещается внутри другого (начиная с LHS), вы можете считать его обманом. Так Уилл является дубликатом Уильяма, но Билла нет. – brettdj
В соответствии с этими правилами вы можете отсортировать список и вывести результаты поиска следующего регулярного выражения: '^ (\ w +) $ \ n \ 1', чтобы сохранить только дубликаты. –