我正在尝试使用Mac OSX中的fdupes从目录中删除重复的文本文件。它已经删除了一堆重复的内容。
我现在遇到的问题是,在剩下的文件中,有许多是重复的,除了在其中一个文件中,文件名是第一行,后面跟着一个空行,然后是文本。
所以,我想找出文件名在顶部重复的所有文件,然后去掉这行和下面的空行,这样fdupes就会把它们识别为重复的。这将允许我使用fdupes来解析它们。
示例:
file001.txt:
test 123
testfile002.001.txt:
file002.001.txt
test 123
test做这件事最好的方法是什么?
发布于 2013-02-15 23:29:06
也许是这样的
perl -0777 -pi -e 's#\Q$ARGV\E$/{2}##' *.txt$ARGV包含文件名。$/是您的输入记录分隔符--您可能需要使用\n或任何行尾。由于$/包含一个斜杠,因此我们将s///的分隔符更改为其他分隔符,在本例中为#。\Q ... \E转义是为了让文件名中的某些元字符不会搞砸任何东西。
-0777开关使perl一次读取整个文件,这样我们就可以在一个正则表达式中匹配多行。
-i开关将进行在位编辑。您可以添加后缀来保留备份,但当用于许多文件时,这可能并不实用。但是,我建议您不要使用-i开关,直到您确定一切都如您所愿,并且只打印到标准输出。
https://stackoverflow.com/questions/14897537
复制相似问题