【问题标题】:Counting multiple characters in text file using wc -使用 wc 计算文本文件中的多个字符 -
【发布时间】:2020-01-05 01:59:51
【问题描述】:

我在下面有一个给定的文件文本:

aatgcacatgttgcatatcaagtggatatgggtggtggaaaactgtataatggccaagcc
aatttccgtttattatttgacccaactcaagcagtagctattccgagtagcgaatttcca

我正在尝试找到一个grep 和字数统计wc 命令,它可以让我找到并计算文件文本中的所有“a”和“g”。

我之前尝试过使用

egrep 'a|g' outputSequence.txt|wc -c

我正在使用来自https://unix.stackexchange.com/questions/37313/how-do-i-grep-for-multiple-patterns-with-pattern-having-a-pipe-character'a|g'

我尝试过使用:

grep -o 'a|g' outputSequence.txt|wc -l

代码:

grep -o 'a|g' outputSequence.txt|wc -l 

输出 0。

我找不到允许我在每行中同时对 a 和 g 进行 grep 和字数统计的资源。

【问题讨论】:

  • 您是尝试使用任何方法解决问题还是需要使用 grep 和 wc?使用 awk 可能更容易解决您的任务,例如在此 Count Occurrences of char in string SO 线程中讨论。

标签: bash word-count


【解决方案1】:

您的方法还可以,需要改进:

  • grep -o 'a|g' 搜索 a,然后是 |,然后是 g。您需要转义 | 以使其成为 OR。 grep -o 'a\|g' 将在输出中搜索 a 字母或字母 g。它将输出由换行符分隔的ag 字符。
  • 然后使用sort | uniq -c 对字母进行排序并打印计数。
  • 不要使用egrep,它已被弃用。请改用grep -E

命令:

grep -o 'a\|g' outputSequence.txt | sort | uniq -c

应该输出:

 36 a
 26 g

但也许你想要as 和gs 的计数之和,那么你已经足够接近了:

grep -o 'a\|g' outputSequence.txt | wc -l

【讨论】:

  • 字符类可以很好地完成这项工作:grep -o '[actg]' | sort | uniq -c 获取每个 DNA 碱基出现次数,或 grep -o '[ag]' | sort | uniq -c 仅计算 ag
  • 还有grep -o -e a -e g | wc -l
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-05
  • 1970-01-01
相关资源
最近更新 更多