在文本文件中查找重复的字符串并在另一个文本文件中单独打印重复的字符串

在文本文件中查找重复的字符串并在另一个文本文件中单独打印重复的字符串

我试图在我的大型文本文件中查找重复项,并尝试将其打印到另一个文本文件中。但我无法将其打印到另一个文本文件中。

以下是我目前得到的信息:

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

input.txt 包含:

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

我需要在这个文件中找到重复项并将其打印在另一个 txt 文件中。

输出类似以下内容:

 Instance_controller
 size_manager

请帮我解决这个问题。这是一个将近 1000 行的文本文件,请告诉我,如果我有多个文本文件,如何找到相同的文件(比较其中文本文件的内容,而不是比较一个文本文件在所有其他文本文件中的内容)。

答案1

您是否需要使用批处理?如果您愿意使用 Powershell(它多年来一直是 Windows 操作系统的一部分),这并不难。
要仅查看唯一项目:

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

您是否还想说您想知道哪些单词是重复的?
如果是这样,这将为您提供一些相关信息。

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

根据评论编辑
将您想要扫描的文本文件合并为一个文件,然后运行我之前发布的命令。

get-content file1.txt > input.txt
get-content file2.txt >> input.txt
get-content file3.txt >> input.txt

答案2

@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
    )
)

用法:

script_name.cmd infile > outfile

对于您的示例infile内容,outfile 将包含以下内容:

 "Instance_controller"
 "size_manager"

相关内容