【问题标题】:Pipelining cut sort uniq流水线切割排序 uniq
【发布时间】:2017-08-16 03:05:34
【问题描述】:

尝试从 sam 文件中获取某个字段,对其进行排序,然后找到文件中唯一数字的数量。我一直在尝试:

cut -f 2 practice.sam > field2.txt | sort -o field2.txt sortedfield2.txt |  
uniq -c sortedfield2.txt

剪辑正在努力从字段二中提取数字,但是当尝试将数字排序到新文件或同一文件中时,我只是得到一个空白。我尝试将管道分成多个部分,但仍然出现相同的错误。我打算使用这三个函数来实现输出计数。

【问题讨论】:

  • 嗯,好的。我们被告知管道是迭代的;当它完成一个部分时,它将继续进行下一个部分。谢谢你。
  • 我不确定你学到了什么,但我认为你可能只是错过了一些要点(迭代在管道中甚至意味着什么?什么是“管道”?)。不用太担心,这一切都可以清除和学习,但是您可能需要考虑一段时间的 shell 管道和重定向。
  • 相关(几乎重复,尽管答案会在问题本身):stackoverflow.com/questions/21584727/…stackoverflow.com/questions/9609322/…

标签: linux sorting pipeline cut uniq


【解决方案1】:

使用

cut -f 2 practice.sam | sort -o | uniq -c

在您的原始代码中,您将cut 的输出重定向到field2.txt,同时尝试将输出通过管道传输到sort。那是行不通的(除非你使用tee)。要么将命令分隔为单独的命令(例如,使用;),要么不将输出重定向到文件。

下半场同上,您将输出写入sortedfield2.txt,因此最终没有任何内容进入stdout,也没有任何内容通过管道传输到uniq

所以另一种可能是:

cut -f 2 practice.sam > field2.txt ; sort -o field2.txt sortedfield2.txt ; uniq -c sortedfield2.txt

相同
cut -f 2 practice.sam > field2.txt 
sort -o field2.txt sortedfield2.txt 
uniq -c sortedfield2.txt

【讨论】:

    【解决方案2】:

    你可以使用这个命令:

    cut -f 2 practise.sam | uniq | sort > sorted.txt
    

    在您的代码中是错误的。错误是“没有这样的文件或目录”。因为管道。您可以在此链接了解它的使用方法

    https://www.guru99.com/linux-pipe-grep.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-29
      • 2011-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-17
      相关资源
      最近更新 更多