我正在清理 Windows 机器上的几百个文件,我需要对它们做的一件事是删除一些重复的行。因此,示例文件可能如下所示:
foo=false
bar=true
baz=false
baz=false
baz=false
因此,在与我合作时,sed
我遇到了这个网站,该网站展示了一条删除重复行的行。
sed "$!N; /^\(.*\)\n\1$/!P; D" textfile.txt
因此,我将其插入命令窗口以查看它是否有效,并且控制台窗口显示已删除重复的行。之后,我将该行插入到我的批处理脚本中,以针对我需要编辑的文件列表运行它。
FOR /F %%a IN ('listfile.txt') DO (
sed "$!N; /^\(.*\)\n\1$/!P; D" %%a
)
但是当我对我的测试文件列表运行它时,它从文件中删除了每一行,除了其中一个重复的行。
我不太熟悉,无法sed
确定该行在做什么,但我对它的测试表明它在做我想要的。那么给了什么?我是否遗漏sed
了批处理文件中的工作方式?
根据我尝试的评论:
gawk "!a[$0]++" textfile.txt
它再次在命令行上工作,但不在脚本中。因此,批处理文件运行此命令的方式肯定存在一些问题,但我无法弄清楚那是什么。