由於語法渲染問題而影響閱讀體驗, 請移步博客閱讀~
本文GitPage地址

grep 搜索

  1. grep
  2. ##Usage: grep [OPTION]... PATTERN [FILE]...
  3. ##Try 'grep --help' for more information.

**

1. 快速上手

  1. ## 创建测试文件
  2. echo -e "ab\na\nb\nc\nd\ne\nf\ng\nA\nB\nC" > test.txt
  3. ## 搜索存在'a'的内容
  4. grep a test.txt

grep 搜索 - 图1

2. 常用

$gr

  1. ## "."模糊匹配
  2. grep a. test.txt

grep 搜索 - 图2

  1. ## 显示所在行
  2. grep -n a test.txt

grep 搜索 - 图3

  1. ## 输出匹配次数(多少行)
  2. grep -c a test.txt

grep 搜索 - 图4

  1. ## 忽略大小写
  2. grep -i a test.txt

grep 搜索 - 图5

  1. ##多项匹配: "|" 分隔开多选必配项。注意,如果我没记错的话,最多可同时匹配1000项
  2. grep -E 'a|b' test.txt

grep 搜索 - 图6

  1. ##打印匹配项的上下一行或多行
  2. grep -nA 1 A test.txt # 等同于 grep -n -A 1 A test.txt, -n 用于显示行数
  3. grep -nB 1 A test.txt # 显示匹配的上一行
  4. grep -nA 1 -B 1 A test.txt # 同时显示匹配的上下两行

grep 搜索 - 图7

3. 快速应用:

抓取fasta序列:
测试文件:test.fa.txt
首先,把fasta文件规整成一行ID,一行序列格式。

  1. ##通过一系列骚操作,把多行序列转换成单行
  2. cat test.fa.txt | tr '\n' '#'| sed 's/#>/\n>/g'|sed 's/#/\n/;s/#//g' > test.fa

3.1,获取所有的fasta ID

  1. grep ">" test.fa

grep 搜索 - 图8

3.2,获取杠内ID

  1. grep ">" test.fa| awk -F\| '{print $2}'

grep 搜索 - 图9

3.3,通过grep 多项匹配,获取前两个ID及其序列

  1. grep -EA 1 $(grep ">" test.fa| awk -F\| '{print $2}'|head -n 2| tr '\n' '|'|sed 's/^/"|/;s/$/"/') test.fa
  2. ##or
  3. grep -EA 1 $(grep ">" test.fa|\
  4. awk -F\| '{print $2}'|\
  5. head -n 2|\
  6. tr '\n' '|'|\
  7. sed 's/^/"|/;s/$/"/') test.fa
  8. '''
  9. 其中,$(grep ">" test.fa| awk -F\| '{print $2}'|head -n 2| tr '\n' '|'|sed 's/^/"|/;s/$/"/') 的结果为
  10. 的结果为:
  11. "|Q6GZX4|Q6GZX3|"
  12. 因此可以直接被 grep -E 参数识别
  13. '''

grep 搜索 - 图10

4. 其他详细请看:

参数解释:https://www.runoob.com/linux/linux-comm-grep.html
复杂正则匹配:https://www.cnblogs.com/keithtt/p/6820540.html


Enjoy~

本文由Python腳本GitHub/語雀自動更新

由於語法渲染問題而影響閱讀體驗, 請移步博客閱讀~
本文GitPage地址

GitHub: Karobben
Blog:Karobben
BiliBili:史上最不正經的生物狗