【发布时间】:2014-04-10 07:53:18
【问题描述】:
我有一个包含 4 位数字的 .txt 文件。
有时它们只包含一个 4 位数字,有时它们包含多个 4 位数字,有时它们是空的。
example1.txt 文件:
6304
6204
example2.txt 文件:
6308
example3.txt 文件:
6305
example4.txt 文件:
6300
6204
6301
example5.txt 文件:
6302
6234
6345
我需要做的是检查示例文件中的数字是否在我在其他文本文件中的数字列表中。
这个列表看起来像这样:(但有更多的数字)
6300
6301
6302
6303
6304
6305
*对于“example1.txt”文件:
应该从文件中删除数字“6204”*(因为它不在列表中。)* 数字“6304”必须保留在示例文件中(它在列表中)
*对于“example2.txt”文件:
号码应该被删除,文件应该是空的。
*对于“example3.txt”文件:
数字保留在示例文件中。
*对于“example4.txt”文件:
示例文件中有超过 1 个匹配项。所以应该删除所有内容。
*对于“example5.txt”文件:
文件中应该只有 6302。另外两个应该删除,因为它们不在列表中。
所以基本上我想保留只有 1 个匹配项的文件。并且这些文件应该只包含与列表中的数字匹配的数字。如果匹配项超过 1 个,则文件应为空。如果没有匹配的文件也应该是空的
除此之外,我想在 sh 脚本中完成。
现在我的问题是:
这是否可能以及如何实现?还是我需要使用数据库和其他编程语言?
提前致谢。
【问题讨论】:
-
你说你有“一个文本文件”然后你说“它们包含一个或两个或没有数字”。你有多少个文本文件?你的“其他”文件叫什么 - 列表之一?
-
如果文件中有3个数字并且都与列表匹配怎么办?你还没有具体说明接下来会发生什么。
-
文本文件的数量是可变的。但我知道如何在脚本中处理它。确实有可能有 3 个数字甚至更多。但大多数情况下它只会包含 1 个数字。有时 2 个数字很少更多......在多个匹配的情况下,它们都应该被删除。只允许一场比赛。对于列表文件,我们只需将其命名为 list.txt 或其他东西:) 我仍然需要制作它。
-
示例 5 说“3204”应该保留在文件中 - 它甚至不在文件中开始!
标签: linux database bash shell scripting