我试图在我的大型文本文件中查找重复项,并尝试将其打印到另一个文本文件中。但我无法将其打印到另一个文本文件中。
以下是我目前得到的信息:
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"