我想使用comm来比较2个列表:一个由随机生成的单词组成:
cat /dev/urandom | head -n 10000 | strings | tr 'A-Z' 'a-z' | sort
另一个是英语词典:
wget -q0- <URL> | sort
(我无法真正泄露网址) 我尝试将两个列表保存到临时文件然后使用 comm -12 file1 file2 它工作,但现在我想这样做而不创建那些临时文件。有办法吗?
答案 0 :(得分:1)
您的代码(重构useless use of cat
)可以通过简单的重写来使用Bash process substitution:
comm <(head -n 10000 </dev/urandom |
strings | tr 'A-Z' 'a-z' | sort) <(wget -q0- <URL> | sort)
然而,除非你的目标是加速宇宙的热量死亡,否则你的代码看起来效率非常低。也许你应该解释一下你想要完成什么? (另外如果你想在/dev/urandom
输出中找到字典单词的频率,我相信strings
将过滤掉任何非常短的单词。)
答案 1 :(得分:0)
顺便说一下,我找到了另一个解决方案,而不是使用comm。
((head -n 10000 </dev/urandom | strings | tr 'A-Z' 'a-z' | sort | uniq) ; (wget -q0- <URL> | sort)) | sort | uniq -d
效率不高,但它有效(uniq -d只打印重复的行=两个文件中的行)。