擅长:python、mysql、java
<p>如果您想在bash one liner中执行此操作:</p>
<pre><code>sort < file | uniq | grep "this: " | wc -l
</code></pre>
<p><a href="http://pubs.opengroup.org/onlinepubs/9699919799/utilities/uniq.html" rel="nofollow">^{<cd1>}</a>命令删除重复的行。在</p>
<p>但是我们想过滤掉不一定相邻的重复行,所以我们首先<a href="http://pubs.opengroup.org/onlinepubs/9699919799/utilities/sort.html" rel="nofollow">^{<cd2>}</a>。在</p>
<p>其余的命令与原始命令相同。在</p>
<p>对于较新的*nix系统(我认为它包括您可能关心的任何系统),您可以将<code>sort</code>和{<cd1>}调用组合成一个<code>sort -u</code>。另外,正如jm666所指出的,<a href="http://pubs.opengroup.org/onlinepubs/009695399/utilities/grep.html" rel="nofollow">^{<cd6>}</a>输出匹配行的计数而不是匹配的行,因此您不需要<code>wc</code>。所以事情就变成了:</p>
^{pr2}$
<p>最后一件事:如果您只想要以<code>this:</code>开头的行,而不是在任何地方包含它的行,那么可以在grep表达式中使用<code>^</code>特殊字符,它只匹配行的开头,如下所示:</p>
<pre><code>sort -u < file | grep -c "^this: "
</code></pre>