grep -c "string" file.txt 如果“string”在下一行继续?

grep -c "string" file.txt 如果“string”在下一行继续?

正如标题所示,我正在尝试计算文本文件中字符串的实例。但是,在某些情况下,该字符串会继续到下一行。我如何改变这个简单的代码来查找“字符串”的实例,即使它碰巧被新行分割?

grep -c "string" file.txt在此输入图像描述

答案1

所以你需要:

  1. 通过删除换行符将整个文件合并为一个字符串
  2. 按模式将字符串分成多行FQTLLALHR
  3. 计算结果的行数:
tr -d "\n\r" <file.txt | sed -e "s/FQTLLALHR/\n/g" | wc -l

完毕。

答案2

我正在研究 fasta 格式的蛋白质序列。条目以“">蛋白质名称”开头,后跟一个新行。该行开始字母(氨基酸)序列,每行占据 60 个字符,然后继续新行。为了保持类似的格式,但将“蛋白质名称”之间的每个序列放在一行上,我遵循:

awk '/^>/ {printf("\n%s\n",$0);next; } { printf("%s",$0);} END {printf("\n");}' < file.txt > new_file.txt

这将在当前目录中创建一个新的文本文件,其中所有序列都在一行中。然后我可以打开文本文件和Ctrl+F序列来计算出现次数,或执行:

grep -c "string" new_file.txt

相关内容