Localiza uma cadeia de duplicatas em um arquivo de texto e imprime a cadeia duplicada sozinha em outro arquivo de texto

0

Estou tentando encontrar duplicatas no meu enorme arquivo de texto e tentando imprimi-lo em outro arquivo de texto. Mas não consigo imprimir em outro.

Aqui está o que eu tenho até agora:

 for dup in $(cut -d " " -f1 input.txt | uniq -d); do grep -n -- "$dup" input.txt; done

O input.txt contém:

 "Root_Controller"
 "Instance_controller"
 "Path_finder"
 "size_manager"
 "Instance_controller"
 "text_controller"
 "file_processor"
 "string_processor"
 "size_manager"
 ".......
  .......

Eu preciso encontrar as duplicatas neste arquivo e imprimi-lo em outro arquivo txt.

Produza algo como:

 Instance_controller
 size_manager

Por favor me ajude com isso. É um arquivo de texto de quase 1000 linhas e por favor deixe-me como encontrar o mesmo se eu tiver um número de arquivos de texto (comparando o conteúdo de um arquivo de texto dentro dele e não comparando o conteúdo de um arquivo de texto em todos os outros arquivos de texto) .

    
por S6633d 29.06.2016 / 19:56

2 respostas

1

Você precisa usar o lote? Se você está disposto a usar o Powershell, que faz parte do sistema operacional Windows há muitos anos, isso não é difícil. Para ver apenas os itens exclusivos:

get-content .\input.txt | select -unique | out-file unique.txt

Você também está tentando dizer que quer saber quais palavras são duplicadas?
Se assim for, isso lhe dará algumas informações sobre isso.

get-content .\input.txt | group-object | where { $_.count -ne 1 } | format-table -auto -prop name,count

Name                Count
----                -----
Root_Controller         2
Instance_controller     4
Path_finder             2
size_manager            3

EDIT por comentário
Mesclar os arquivos de texto que você deseja digitalizar em um único arquivo e, em seguida, execute o comando que eu postei anteriormente.

get-content file1.txt > input.txt
get-content file2.txt >> input.txt
get-content file3.txt >> input.txt
    
por 29.06.2016 / 21:23
0
@ECHO OFF
SETLOCAL
FOR /F "usebackq tokens=* delims=" %%a IN (%1) DO (
    IF NOT DEFINED line["%%a"] (
        SET line["%%a"]=defined
    ) ELSE IF NOT DEFINED dupe["%%a"] (
        SET dupe["%%a"]=defined
        ECHO %%a
    )
)

Uso:

script_name.cmd infile > outfile

Com o seu exemplo infile content, o outfile conteria o seguinte:

 "Instance_controller"
 "size_manager"
    
por 15.04.2018 / 21:29