簡體   English   中英

重擊-計算圖案並打印包含該圖案的行

[英]Bash - count a pattern and print the line containing the pattern

大家! 在閱讀本討論“ 計數文件中某個模式出現的次數(即使在同一行) ”時,我想知道是否可以在計數值旁邊添加包含該模式的行。

不知何故我無法在討論中添加任何評論,所以我要發布一個新問題。 有人可以照亮我嗎?


這里肯定會有一些誤解,所以我舉一個例子。 假設我有一個類似下面的DNA序列,想找出每行中有多少個“ CG”。

ACAAAGAACTCAAGAAGTTGGACCCCAGAGAACCAAATAACCCTATTAAA
AATTCGGAACAGAGATAAACAAAGAATTCTCAACTGAGGAAACTTGAATG
GGATTTTTTTTTAAGATTCACTTATTTTTATTTTCTGCATGAGTGTTTGC
CTCGATGTATGTACATATACGACATGTGTACGTGGTGCGCAAGTAAGCAG

此外,我想打印每行(不是圖案)以及圖案計數。

0 ACAAAGAACTCAAGAAGTTGGACCCCAGAGAACCAAATAACCCTATTAAA
1 AATTCGGAACAGAGATAAACAAAGAATTCTCAACTGAGGAAACTTGAATG
0 GGATTTTTTTTTAAGATTCACTTATTTTTATTTTCTGCATGAGTGTTTGC
4 CTCGATGTATGTACATATACGACATGTGTACGTGGTGCGCAAGTAAGCAG

我希望以上示例將有助於更好地理解該問題。

謝謝!

你可以做:

printf 'pattern' | tee >(sed 's/$/ : /') | grep -cf - input.txt

借助tee和流程替代。

例:

% cat file.txt 
foobar
spamegg
foo

% printf 'foo' | tee >(sed 's/$/ : /') | grep -cf - file.txt 
foo : 2
cat fileName | grep pattern | uniq -c

我剛剛找到了一個使用EXCEL的非常簡單而優雅的解決方案。 公式如下所示...

=(LEN(B2)-LEN(SUBSTITUTE(B2,"CG","")))/2

該公式的基本作用是計算單元格中字符串的總長度以及除去模式后的長度(在這種情況下為“ CG”),然后減去它們。 由於每個“ CG”都由空格代替,因此替換后會丟失2個字符串,您可以通過將圖案的長度除以圖案的長度(在這種情況下為2)來獲得圖案的編號。

例如,以下序列包含50個字符串和13個CG。

CAGTGCACACAACACATGTACGCGCGCGCGCGCGCGCGCGCGCGCGTGTG  50

將“ CG”替換為空白后,您將獲得24個字符串。

CAGTGCACACAACACATGTATGTG  24

要計算“ CG”發生率,

(50-24)/2 = 13

如果要查找“ CAG”,請輸入“ CAG”而不是“ CG”並除以3。這有多簡單!

您可以在以下鏈接中看到原始帖子。

http://fiveminutelessons.com/learn-microsoft-excel/count-occurrences-single-character-cell-excel#sthash.H4VfOkGB.dpbs

英語不是我的主要語言,所以請理解我的寫作中的錯誤。

人是天才!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM