批量从文本文件中删除重复行

2024-03-19

是否可以从文本文件中删除重复的行?如果是,怎么办?


当然可以,但就像大多数批处理文本文件一样,它并不漂亮,而且不是特别快。

该解决方案在查找重复项时忽略大小写,并对行进行排序。文件名作为第一个也是唯一一个参数传递给批处理脚本。

@echo off
setlocal disableDelayedExpansion
set "file=%~1"
set "sorted=%file%.sorted"
set "deduped=%file%.deduped"
::Define a variable containing a linefeed character
set LF=^


::The 2 blank lines above are critical, do not remove
sort "%file%" >"%sorted%"
>"%deduped%" (
  set "prev="
  for /f usebackq^ eol^=^%LF%%LF%^ delims^= %%A in ("%sorted%") do (
    set "ln=%%A"
    setlocal enableDelayedExpansion
    if /i "!ln!" neq "!prev!" (
      endlocal
      (echo %%A)
      set "prev=%%A"
    ) else endlocal
  )
)
>nul move /y "%deduped%" "%file%"
del "%sorted%"

该解决方案区分大小写,并且保留行的原始顺序(当然重复项除外)。文件名再次作为第一个也是唯一的参数传入。

@echo off
setlocal disableDelayedExpansion
set "file=%~1"
set "line=%file%.line"
set "deduped=%file%.deduped"
::Define a variable containing a linefeed character
set LF=^


::The 2 blank lines above are critical, do not remove
>"%deduped%" (
  for /f usebackq^ eol^=^%LF%%LF%^ delims^= %%A in ("%file%") do (
    set "ln=%%A"
    setlocal enableDelayedExpansion
    >"%line%" (echo !ln:\=\\!)
    >nul findstr /xlg:"%line%" "%deduped%" || (echo !ln!)
    endlocal
  )
)
>nul move /y "%deduped%" "%file%"
2>nul del "%line%"


EDIT

上面的两种解决方案都去除了空行。我认为在谈论不同的值时不值得保留空行。

我修改了这两种解决方案以禁用 FOR /F "EOL" 选项,以便保留所有非空白行,无论第一个字符是什么。修改后的代码将 EOL 选项设置为换行符。


新解决方案2016-04-13:JSORT.BAT

你可以用我的使用简单的一个衬垫有效地排序和删除重复的行(加上一个 MOVE 以用最终结果覆盖原始文件)。 JSORT 是纯脚本,可​​以在 XP 及以上版本的任何 Windows 计算机上本机运行。

@jsort file.txt /u >file.txt.new
@move /y file.txt.new file.txt >nul
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

批量从文本文件中删除重复行 的相关文章

  • 如何理解批处理文件?

    我之前没有使用批处理文件或 shell 脚本的经验 我需要了解相关项目中使用的批处理文件所执行的操作 有没有资源提供批处理文件命令的详尽列表以及每个命令的作用 一旦您熟悉了一般的 BAT 文件信息 使用其他用户在其他答案中发布的一些有用信息
  • 在应用程序启动时禁用 Windows 服务

    因为我必须在应用程序启动时关闭 Windows 高级文本服务 有什么特殊的API吗 它适用于具有默认权限的用户吗 该问题的标题是 禁用 Windows 服务 但答案都告诉我们如何停止服务 您在 Google 上会发现的大部分内容是 您可以使
  • 一个 Node.js 集群可以在 64 位 Wintel PC 上生成多少个子进程?

    我正在运行并发测试 为了简洁起见 为每个欺骗的 http 请求定义了一个进程 对于最多 64 个请求 进程 它工作得很好 但在 65 个请求 进程上就折叠起来了 我在一台 I5 笔记本电脑上运行 Window 7 64 位 具有 4GB R
  • PowerShell 中的 echo 和 Write-Host 有什么区别?

    我对之间的区别感到困惑echo and Write Host在 PowerShell 中 我有两个文件 POC ps1 validatePath ps1 这些文件位于我的本地计算机上 我使用以下命令在远程计算机上运行它们Invoke Com
  • 如何从另一个 SoftwareBitmap (UWP) 的区域创建 SoftwareBitmap

    创建新的最有效 最简单 的方法是什么 Windows Graphics Imaging SoftwareBitmap具有区域副本的对象 BitmapBounds例如 另一个SoftwareBitmap对象 深拷贝 适用于 Windows U
  • 在 C++ 中的 cURL 库请求中设置 Internet Explorer 代理 - Windows

    好吧 我想使用默认的 Internet Explorer 连接代理设置在 C 中的 cURL 中发出请求 这是我的示例代码 CURL curl CURLcode result curl curl easy init char errorBu
  • VS Code 终端无法识别 PATH 变量

    我在 PATH 中添加了一个目录 但 VS Code 中的终端无法识别我尝试从该目录运行的命令 exe 终端使用 cmd 而不是 power shell 我缺少什么 重新启动我的计算机 它就工作了 显然 VS Code 无法识别这些更改
  • Powershell添加系统变量

    我正在尝试使用 PowerShell 在此处添加系统变量 我已经尝试过两种方式使用 env MyTestVariable My test variable and Environment SetEnvironmentVariable Tes
  • Python - PIP 安装故障排除 - PermissionError: [WinError 5] 访问被拒绝

    使用 PIP 安装新软件包甚至将 pip 本身升级到最新版本时出现以下错误 我正在 Windows 8 1 机器上使用 Python 3 4 运行 pip 该消息告诉我我没有文件的管理权限 我的帐户是管理员帐户 我很感激任何关于如何解决这个
  • 检测windows上的核心数

    如果我在 Linux 或 Mac 上运行 R 我可以使用以下命令检测可用内核的数量multicore detectCores 但是 没有 Windows 版本的多核功能 因此我无法在 Windows 上使用此技术 如何从 R 中以编程方式检
  • 让所有进程并行

    我正在尝试使用 C 的 TPL 并行获取所有进程的 CPU 我的代码是 private IDictionary
  • 如何模拟 TCP/IP 错误?

    在多层应用程序上 我需要模拟各种 TCP IP 错误来测试一些重新连接代码 有谁知道我可以使用什么工具 基于 Windows 来实现此目的 谢谢 Scapy http secdev org projects scapy 允许您控制数据包的各
  • 如何为Windows 10及以下版本的域名创建自签名证书进行开发?

    I have subdomain example com我用于开发目的 我的 Web 应用程序解决方案包含 Web API 等 我需要从外部系统调用它们 因此我没有使用 localhost 我现在需要测试 SSL 并需要一个证书subdom
  • 自 2012 年以来,WinSock 注册 IO 性能是否有所下降?

    我最近使用 MS 为该 API 提供的稍微可接受的文档编写了基于 WinSock Registered IO RIO 的 UDP 接收 最终的性能非常令人失望 单套接字性能有些稳定 约为每秒 180k 数据包 使用多个 RSS 队列 即多个
  • “sed” 在文件中插入反斜杠

    Tool Windows 版 Git Bash Problem 尝试在目录中每个文件的顶部插入文本 connectcentral Code for f in DIR sql do sed i 1i connect central f don
  • 以编程方式最大化屏幕一半的窗口

    我想最大化屏幕左侧的随机窗口 我可以在我的代码中使用 Windows Aero 函数吗 这个窗口can像用鼠标一样最大化 我只想以编程方式做到这一点 I use C 我可以得到IntPtr窗户的 如果可能的话 不要伪造鼠标或键盘输入 这可以
  • 你能在 MS Windows 上用 Python 将 stdin 作为文件打开吗?

    在 Linux 上 我使用 subbprocess Popen 来运行应用程序 该应用程序的命令行需要输入文件的路径 我了解到我可以将路径 dev stdin 传递到命令行 然后使用 Python 的 subproc stdin write
  • 有没有办法查看 Docker for Windows 上的容器磁盘使用情况?

    我很好奇除了作为容器映像一部分的层之外 是否还有一种方法可以查看正在运行的 Windows 容器使用了多少磁盘空间 基本上 容器自创建以来 增长 了多少 在 Linux 或在 HyperV 中运行的 Linux 容器 中 这将是docker
  • 如何使用 DLL 来模拟静态库的“应用程序内全局变量的多个实例”行为?

    我们有一个用 C C 编写的应用程序 它被分解为单个 EXE 和多个 DLL 这些 DLL 中的每一个都使用相同的静态库 utilities lib 实用程序静态库中的任何全局变量实际上在应用程序内运行时都会有多个实例 每个模块 即 DLL
  • 终止进程树(C for Windows)

    以前曾有人问过这个问题 但我在代码中找不到明确的答案 我打开一个进程 ProcessA PID 为 1234 此进程打开一个子进程 ProcessAB PID 5678 完成后 我终止了 ProcessA 但 ProcessAB 仍然存在

随机推荐

  • 在Android Web浏览器中使用js打开选择框

    我有一个标准
  • 具有隐藏属性的类会破坏显示格式吗?

    与这个有趣的问题相关zett42 https stackoverflow com q 71631192 15339544 看起来像对象实例隐藏或私人的特性可能会打破用于显示格式 https stackoverflow com questio
  • R 中 set.seed 的参数

    我想了解如何set seed在 R 中工作 我理解它 可以重现随机样本 但我不知道两者之间有什么区别set seed 1 and set seed 123 括号里的参数是什么意思 The seed论证中set seed是单个值 解释为整数
  • DeleteView 中的 success_message 未显示

    我有一个删除视图 class LectureDelete SuccessMessageMixin DeleteView model Lecture success message Die Veranstaltung wurde gel sc
  • 如何在 ILNumerics 中有效地绘制大曲面(例如 1000x1000)?

    这是我使用的代码 public partial class Form1 Form private ILPlotCube plotcube null private ILSurface surface null public Form1 In
  • 使用字符串中的名称获取变量的值

    我想从变量的名称中获取其值 澄清一下 XML 文档以字符串形式提供变量名称 我想获得价值 像这样的东西 string bublegumA strawberry string bubblegumB banana get which varia
  • 将基于视图的 NSOutlineView 绑定到 Core Data

    我正在尝试将新的基于视图的 OutlineView 实现为我的 Mac 应用程序中的源列表 不过 我无法获取要显示的值 因此我从核心数据应用程序模板制作了一个小型测试应用程序 但也无法让它在其中正常工作 我在数据模型中定义了两个简单的类 我
  • 在 null 上调用成员函数 store() - laravel 5.4

    我正在尝试上传图像 但每次提交时都会返回 store 错误 我已将表单设置为 enctype multipart form data 这没有帮助 有人能指出我正确的方向吗 Thanks 控制器内部功能 public function sto
  • 来自 Android 的 Facebook Score API 调用未在时间轴/股票代码上显示高分

    我正在尝试让 Android 应用程序将高分发布到 Facebook 类似于 Facebook 上的 愤怒的小鸟 的做法 它显示在时间轴上 也显示在股票代码中 请记住 该游戏仅在 Android 上运行 并且没有 FB Canvas 应用程
  • GiST 和 GIN 索引之间的区别

    我正在实现一个表 其中有一列的数据类型为tsvector我想了解什么索引更好使用 GIN 还是 GiST 在浏览中postgres 文档在这里 http www postgresql org docs 9 1 static textsear
  • 模拟安全警报的解决方案 - X509TrustManager 的不安全实现

    因此 最近我在开发人员控制台中收到以下警告 为了解决该问题 我已完成了所需的修复 根据谷歌的建议 here https support google com faqs answer 6346016 要确认您已进行正确的更改 请将应用程序的更
  • CouchDB 备份和克隆数据库

    我们正在寻找 CouchdDB 作为类似 CMS 的应用程序 围绕备份我们的生产数据库有哪些常见模式 最佳实践和工作流程建议 我对克隆数据库以用于开发和测试的过程特别感兴趣 仅从实时运行的实例下复制磁盘上的文件就足够了吗 您可以在两个实时运
  • TabLayout 使用自定义视图更新选项卡内容

    我在用着TabLayout新的材料设计 我有一个问题 创建选项卡后我无法更新自定义视图的选项卡内容 我可以用以下方法简化 PagerAdapter 中的方法 public View setTabView int position boole
  • 记录器服务错误:鼠标左键按下:无法找到匹配的元素 - Xcode 错误

    我正在尝试通过 XCTest 自动化我的 mac 应用程序 当尝试从 XCode 记录应用程序时 我收到以下错误消息 当我点击按钮时会发生这种情况 按钮层次结构是 按钮 gt 堆栈视图 gt NSView 这里 button是NSButto
  • 外键和索引问题

    我正在使用 SQL Server 2008 Enterprise 我有一个表 其中一个列引用另一个表 在同一个数据库中 中的另一列作为外键 这是相关的SQL语句 更详细地说 表 Foo 中的列 AnotherID 引用了另一个表表 Goo
  • 如何使用 sass 正确避免在 HTML 上嵌入 twitter bootstrap 类名

    我正在开发一个刚刚开始的 Rails 项目 我们想使用 twitter bootstrap 作为我们样式的基础 一开始我们只是直接在 HTML 代码上使用 bootstrap 的类名 就像 bootstrap 的文档中所示 但在阅读以下文章
  • 如何检查 Python 数组中是否存在某个元素(相当于 PHP in_array)?

    我是 Python 新手 我正在寻找一个标准函数来告诉我数组中是否存在某个元素 我找到了index方法 但如果未找到该元素 则会抛出异常 我只需要一些可以返回的简单函数true如果该元素在数组中或者false if not 基本上相当于 P
  • hook_user():将额外的字段插入数据库而不仅仅是表单

    我可以在注册中添加一个额外的字段 我需要知道的是我需要采取什么步骤来获取该输入并将其插入到 drupal 的用户表中 下面的代码位于我的模块中 它仅向表单添加一个字段 但是当提交时 它不会对数据执行任何操作 function perscri
  • 如何组合两个索引不同的 pandas 系列?

    我尝试将两个不同索引的系列组合在一起 相同的行数 我试过pd concat s1 s2 axis 1 例如 s1 为 index s1 0 1 5 1 2 s2 是 index s2 a 1 b 2 但我得到 index s1 s2 0 1
  • 批量从文本文件中删除重复行

    是否可以从文本文件中删除重复的行 如果是 怎么办 当然可以 但就像大多数批处理文本文件一样 它并不漂亮 而且不是特别快 该解决方案在查找重复项时忽略大小写 并对行进行排序 文件名作为第一个也是唯一一个参数传递给批处理脚本 echo off