Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我想使用 comm 来比较 2 个列表:一个由随机生成的单词组成:
cat /dev/urandom | head -n 10000 | strings | tr 'A-Z' 'a-z' | sort
另一本是英文词典:
wget -q0- <URL> | sort
(我不能真正放弃 URL)我尝试将两个列表都保存到临时文件中,然后使用 comm -12 file1 file2 并且它有效,但现在我想在不创建这些临时文件的情况下这样做。有办法吗?
您的代码(使用无用的cat重构)可以简单地重写以使用 Bash进程替换:
cat
comm <(head -n 10000 </dev/urandom | strings | tr 'A-Z' 'a-z' | sort) <(wget -q0- <URL> | sort)
但是,除非您的目标是加速宇宙的热寂,否则您的代码看起来非常低效。也许您应该解释您要完成的工作?(另外,如果你想在/dev/urandom输出中找到字典单词的频率,我相信strings会过滤掉任何非常短的单词。)
/dev/urandom
strings
顺便说一句,我找到了另一个解决方案,而不是使用 comm。
((head -n 10000 </dev/urandom | strings | tr 'A-Z' 'a-z' | sort | uniq) ; (wget -q0- <URL> | sort)) | sort | uniq -d
它不是很有效,但它可以工作(uniq -d 只打印重复的行=两个文件中的行)。