0

我想使用 comm 来比较 2 个列表:一个由随机生成的单词组成:

cat /dev/urandom | head -n 10000 | strings | tr 'A-Z' 'a-z' | sort

另一本是英文词典:

wget -q0- <URL> | sort

(我不能真正放弃 URL)我尝试将两个列表都保存到临时文件中,然后使用 comm -12 file1 file2 并且它有效,但现在我想在不创建这些临时文件的情况下这样做。有办法吗?

4

2 回答 2

1

您的代码(使用无用的cat重构)可以简单地重写以使用 Bash进程替换

comm <(head -n 10000 </dev/urandom |
        strings | tr 'A-Z' 'a-z' | sort) <(wget -q0- <URL> | sort)

但是,除非您的目标是加速宇宙的热寂,否则您的代码看起来非常低效。也许您应该解释您要完成的工作?(另外,如果你想在/dev/urandom输出中找到字典单词的频率,我相信strings会过滤掉任何非常短的单词。)

于 2014-01-05T12:29:00.837 回答
0

顺便说一句,我找到了另一个解决方案,而不是使用 comm。

((head -n 10000 </dev/urandom | strings | tr 'A-Z' 'a-z' | sort | uniq) ; (wget -q0- <URL> | sort)) | sort | uniq -d

它不是很有效,但它可以工作(uniq -d 只打印重复的行=两个文件中的行)。

于 2014-01-07T10:43:25.870 回答