我想删除多个文件中的所有重复单词并仅保留一个单词。我该怎么做?我还想告诉文件内容不应该简短。
示例:- 假设我有 10 个文件(从 1.txt 到 10.txt)。单词名称 ABC 位于文件编号 1、4 和 6 中。单词名称 xyz 也位于文件编号 3、5、8、9、10 中。
I want to remove word ABC from file number 4 and 6 only and keep word ABC in file number 1 only. Same as the for word xyz. I want to keep word xyz only in file number 3.txt and remove from file number 5,8,9,10.txt
Please give me guidance for the same.
Thank You.
答案1
我对文件执行了同样的操作(删除除 size + crc32 相同的所有内容),但我使用了一个花哨的脚本来过滤掉这些东西。
您可以首先使用类似的方法word | sort | uniq
为每个文件生成一个排序的单词列表。
然后我将使用关联数组(如 REXX),其中
/* REXX */
used. = 0
do n = 1 to 10; call dofile; end
exit
dofile:
infile = n'.txt'; outfile = n'.out'
call stream infile, 'c', 'open read'
call stream outfile, 'c', 'open write replace'
do while lines(infile)
word = linein(infile)
/* remove the comment markers to make it case insensitive */
/* word = translate(word) */
if used.word = 0
then do; call lineout outfile, word; used.word = 1; end
end
call stream outfile, 'c', 'close'
call stream infile, 'c', 'close'
return
这个特定的脚本维护着所有文件中使用的所有单词的列表。它读入一个文件,看看这个单词是已知的还是需要学习的。如果要学习,那么它就会被记住,并且副本会被写入学习它的课程的 .out 文件中。所以在你的例子中,“xyz”是在第 3 课中学习的,并且位于 3.out 中,而 ABC 是在第 1 课中学习的,所以位于 1.out 中。
有点像学习一门语言。