【发布时间】:2017-09-19 19:04:42
【问题描述】:
一个作业在服务器上运行,它会创建一个如下所示的文件:
1000727888004
522101 John Smith
522101 John Smith
522188 Shelly King
522188 Shelly King
1000727888002
522990 John Doe
522990 John Doe
9000006000000
目前,我们正在修复代码,但这需要一个月的时间。同时,我正在使用命令删除重复记录,如下所示。
perl -ne 'print unless $dup{$_}++;' old_file.txt > new_file.txt
运行上述命令后,它会删除重复的条目,但计数仍如下:
1000727888004
522101 John Smith
522188 Shelly King
1000727888002
522990 John Doe
9000006000000
以 1 开头的行的最后一个数字是总计数(因此,第一行中的 4 应该是 2,第四行中的 2 应该是 1,从 9 开始的最后一行中的 6 应该是 3)。它应该如下所示:
1000727888002
522101 John Smith
522188 Shelly King
1000727888001
522990 John Doe
9000003000000
我想不出任何可以解决它的逻辑。我在这里需要帮助。我可以运行另一个命令或在我的 perl 命令中添加一些东西来更正计数。是的,我可以在 Notepad++ 中打开文件并手动修复数字,但我正在尝试使其自动化。
谢谢!
【问题讨论】:
-
最后一条记录是什么,从 9 开始?
-
即总计数文件的预告片。前 9 始终存在,然后接下来的 6 个数字是计数。如果它是一位数,则在左侧填充 5 个零。最后 6 个数字总是 0
标签: linux unix command-line-arguments