我在文本文件中有这种类型的数据..
www.example.com/link1
www.example.com/link2
。 。 。 有没有办法通过命令promtp找到重复项?
im on windows
我检查了其他答案,但它们都是针对linux的。
PS:我不仅需要找到它们,还要删除重复项。它们在文本文件中有数千个URL,显然有数百个重复。
答案 0 :(得分:0)
您是否有理由需要找到重复项?
如果您需要找到它们以便删除它们,我建议您将信息复制到Excel电子表格中。 excel中有过滤选项可以帮助您理清您选择的信息。
这是一个可能帮助你的链接:
如果那不是你想要的,我道歉。
答案 1 :(得分:0)
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcedir=U:\sourcedir"
SET "filename1=%sourcedir%\q34835472.txt"
SET "last="
FOR /f "delims=" %%a IN ('sort "%filename1%"') DO (
IF "%%a"=="!last!" ECHO %%a
SET "last=%%a"
)
GOTO :EOF
您需要更改sourcedir
的设置以适合您的具体情况。
我使用了一个名为q34835472.txt
的文件,其中包含一些测试数据用于我的测试。
毫无疑问,这会对批处理脚本中常见的某些字符产生一些敏感性,但鉴于您提供的样本很少,它不太可能成为问题。
它的工作原理是简单地对文件进行排序,然后检测每一行是否与前一行完全相同,因为sort
将相同的行组合在一起。
始终最好提供要解决的实际问题 - 节省浪费的精力。
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
DEL u:\result.txt 2>nul
ECHO START AT %time%
SET "sourcedir=U:\sourcedir"
SET "filename1=%sourcedir%\q34835472.txt"
SET "filename2=%sourcedir%\q34835472.xtx"
SORT "%filename1%" /t u:\ /o "%filename2%"
SET "last="
PUSHD "U:\"
FOR /f "usebackqdelims=" %%a IN ("%filename2%") DO (
IF "%%a" neq "!last!" SET "last=%%a"&>>u:\result.txt ECHO %%a
)
POPD
ECHO end AT %time%
GOTO :EOF
注意到U:
是一个ramdrive。
使用最快的可用选项执行sort
,包括使用/t
选项将ramdrive用作临时位置而不是默认值(一般临时目录%temp%,这通常是常规的驱动)
使用包含~5Mlines的110Mb源文件,在我的机器上花了不到12分钟。