首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

生信(十)利用kseq.h和regex.h实现类似grep查找fastq reads功能示例(C语言)

引出问题 做生信朋友应该都很熟悉类Unix系统中grep命令,该命令可以快速查找并输出包含目标字符串。在对fastq文件进行处理时,我们有时候需要查找包含特定字符串reads。...在《生信(八)zlib库操作fq-gz文件》一文中,我们分享过一个例子: 如何输出第一(name结尾是ACCGAATG所有reads? ?...,笔者发现上面的两种解决方式只适用于reads只占4情况,如果一个reads超过4就会出错:比如下面这样一个reads就不会被输出,并且可能会导致上述sed和awk命令运行结果出错: @K00137...笔者利用kseq.h和regex.h编写了一段代码,可以解决上述问题: 如何输出第一(name结尾是ACCGAATG所有reads? 代码运行效果如下: ? 更多测试: ? ?...(注意:如果要做测试,请将下面的reads保存成'\n'为结尾文件格式。)

1K10
您找到你想要的搜索结果了吗?
是的
没有找到

Linux Shell 文本处理工具集锦

match_patten file // 默认访问匹配 常用参数 -o 只输出匹配文本行 VS -v 只输出没有匹配文本行 -c 统计文件中包含文本次数 grep -c "text" filename...-R -n 匹配多个模式 grep -e "class" -e "vitural" file grep输出\0作为结尾文件名:(-z) grep "test" file* -lZ| xargs -...cut 取范围 N- 第N个字段到结尾 -M 第1个字段为M N-M N到M个字段 cut 取单位 -b 字节为单位 -c 字符为单位 -f 字段为单位(使用定界符) eg: cut -c1.../linux/' #不包含linux文本 设置定界符 使用-F来设置定界符(默认为空格) awk -F: '{print $NF}' /etc/passwd 读取命令输出 使用getline,将外部...for(i=0;i<10;i++){print $i;} for(i in array){print array[i];} eg: 逆序形式打印行:(tac命令实现) seq 9| \ awk

3.2K70

Linux文本处理工具,看这篇就够了。

、tr、cut、paste、wc、sed、awk; 提供例子和参数都是最常用和最为实用; 对shell脚本使用原则是命令单行书写,尽量不要超过2; 如果有更为复杂任务需求,还是考虑python...match_patten file // 默认访问匹配 常用参数: -o 只输出匹配文本行 VS -v 只输出没有匹配文本行 -c 统计文件中包含文本次数 grep -c "text" filename...-R -n 2 匹配多个模式 grep -e "class" -e "vitural" file 3 grep输出以作为结尾文件名:(-z) grep "test" file* -lZ| xargs...cut 取范围 N- 第N个字段到结尾 -M 第1个字段为M N-M N到M个字段 cut 取单位 -b 字节为单位 -c 字符为单位 -f 字段为单位(使用定界符) eg: cut -c1.../linux/' #不包含linux文本 设置定界符 使用-F来设置定界符(默认为空格) awk -F: '{print $NF}' /etc/passwd 读取命令输出 使用getline,将外部

4.4K10

史上最全 Linux Shell 文本处理工具集锦,快收藏!

、tr、cut、paste、wc、sed、awk; 提供例子和参数都是最常用和最为实用; 对shell脚本使用原则是命令单行书写,尽量不要超过2; 如果有更为复杂任务需求,还是考虑python...match_patten file // 默认访问匹配 常用参数: -o 只输出匹配文本行 VS -v 只输出没有匹配文本行 -c 统计文件中包含文本次数 grep -c "text" filename...-R -n 2 匹配多个模式 grep -e "class" -e "vitural" file 3 grep输出以作为结尾文件名:(-z) grep "test" file* -lZ| xargs...cut 取范围 N- 第N个字段到结尾 -M 第1个字段为M N-M N到M个字段 cut 取单位 -b 字节为单位 -c 字符为单位 -f 字段为单位(使用定界符) eg: cut -c1.../linux/' #不包含linux文本 设置定界符 使用-F来设置定界符(默认为空格) awk -F: '{print $NF}' /etc/passwd 读取命令输出 使用getline,将外部

4K50

日拱一卒,MIT教你耍帅,炫酷无比命令行用法

s命令结构是s/REGEX/SUBSTITUTION/,REGEX是你想要搜索匹配正则表达式,SUBSTITUTION是你想要替换内容。...$/\2/' | sort | uniq -c sort将会将它读入进行排序,uniq -c将相同聚合到一起,先输出该行出现次数,再输出对应内容。...让我们来看看能不能做一些更复杂事情,比如说找出只登录了一次,并且c开头e结尾用户名: awk '$1 == 1 && $2 ~ /^c[^ ]*e$/ { print $2 }' | wc -l...使用curl命令来获取它,并且提取出是数字两列。如果你获取HTML数据,pup会很好用。对于JSON数据来说,试试jq。...所以我们再加上grep \[1\]进行过滤: 最后我们使用sed命令正则表达式选出启动时间。

1K40

搞定Linux Shell文本处理工具,看完这篇集锦就够了

match_patten file // 默认访问匹配 常用参数 -o 只输出匹配文本行 VS -v 只输出没有匹配文本行 -c 统计文件中包含文本次数 grep -c "text" filename...-R -n 匹配多个模式 grep -e "class" -e "vitural" file grep输出\0作为结尾文件名:(-z) grep "test" file* -lZ| xargs...cut 取范围 N- 第N个字段到结尾 -M 第1个字段为M N-M N到M个字段 cut 取单位 -b 字节为单位 -c 字符为单位 -f 字段为单位(使用定界符) eg: cut -.../linux/' #不包含linux文本 设置定界符 使用-F来设置定界符(默认为空格) awk -F: '{print $NF}' /etc/passwd 读取命令输出 使用getline,将外部...for(i=0;i<10;i++){print $i;} for(i in array){print array[i];} eg: 逆序形式打印行:(tac命令实现) seq 9| \ awk

6.2K41

搞定 Linux Shell 文本处理工具

match_patten file // 默认访问匹配 常用参数: -o 只输出匹配文本行 VS -v 只输出没有匹配文本行 -c 统计文件中包含文本次数 grep -c "text" filename...-R -n 匹配多个模式 grep -e "class" -e "vitural" file grep输出以作为结尾文件名:(-z) grep "test" file* -lZ| xargs -0...cut 取范围 N- 第N个字段到结尾 -M 第1个字段为M N-M N到M个字段cut 取单位 -b 字节为单位 -c 字符为单位 -f 字段为单位(使用定界符) cut -c1-5 file...移除空白sed '/^$/d' file 变量转换 已匹配字符串通过标记&来引用..../linux/' #不包含linux文本 设置定界符 使用-F来设置定界符(默认为空格) awk -F: '{print $NF}'/etc/passwd 读取命令输出 使用getline,将外部

1.7K10

搞定 Linux Shell 文本处理工具操作命令

match_patten file // 默认访问匹配 常用参数: -o 只输出匹配文本行 VS -v 只输出没有匹配文本行 -c 统计文件中包含文本次数 grep -c "text" filename...-R -n 匹配多个模式 grep -e "class" -e "vitural" file grep输出以作为结尾文件名:(-z) grep "test" file* -lZ| xargs -0 ...cut 取范围 N- 第N个字段到结尾 -M 第1个字段为M N-M N到M个字段cut 取单位 -b 字节为单位 -c 字符为单位 -f 字段为单位(使用定界符) cut -c1-5 file.../linux/'  #不包含linux文本 设置定界符 使用-F来设置定界符(默认为空格) awk -F: '{print $NF}'/etc/passwd 读取命令输出 使用getline,将外部...for (i=0;i<10;i++){print $i;} for (i in array){print array[i];} 逆序形式打印行:(tac命令实现) seq 9|awk '{lifo

2.4K20

Linux文本处理详细教程

grep match_patten file // 默认访问匹配 常用参数 -o 只输出匹配文本行 VS -v 只输出没有匹配文本行 -c 统计文件中包含文本次数 grep -c...-R -n 匹配多个模式: grep -e "class" -e "vitural" file grep输出0作为结尾文件名(-z): grep "test" file* -lZ| xargs -...cut 取范围 N- 第N个字段到结尾-M 第1个字段为MN-M N到M个字段 cut 取单位 -b 字节为单位-c 字符为单位-f 字段为单位(使用定界符) 示例: cut...全局替换 sed 's/text/replace_text/g' file 默认替换后,输出替换后内容,如果需要直接替换原文件,使用-i: sed -i 's/text/repalce_text/g.../linux/' #不包含linux文本 设置定界符 使用-F来设置定界符(默认为空格): awk -F: '{print $NF}' /etc/passwd 读取命令输出 使用getline,将外部

4.3K20

grep中使用d匹配数字不成功原因

,并在标准输出中显示出来,除非使用了“>" 重定向符号, c. grep 与 egrep 在处理文本文件时,是按处理 sed 正则表达式特点 1)sed 文本工具支持:BREs、EREs...sed 指令默认是使用"BREs" sed 命令参数 “-r ” ,则表示要使用“EREs" 2)sed 功能与作用 a. sed 处理对象:文本文件 b. sed 处理操作:对文本文件内容进行...RegEx python RegEx Perl regEx 转义 \ \ \ \ ^ 匹配首,例如'^dog'匹配字符串dog开头(注意:awk 指令中,'^'则是匹配字符串开始) ^ ^...^ ^ $ 匹配行尾,例如:'^、dog$'匹配字符串 dog 为结尾(注意:awk 指令中,'$'则是匹配字符串结尾) $ $ $ $ ^$ 匹配空行 ^$ ^$ ^$ ^$ ^string...),匹配 frog 开头单词 \< \< 不支持 不支持(但可以使用\b来匹配单词,例如:'\bfrog') \> 匹配单词,例如:'frog\>'(等价于'frog\b '),匹配 frog 结尾单词

3.9K10

你应该学习正则表达式

7 – 命令用法 许多Unix命令行实用程序也支持Regex!我们将介绍如何使用grep查找特定文件,以及使用sed替换文本文件内容。...ls ~/Downloads——列出Downloads目录中文件 |——将输出管道输送到下一个命令 grep -E——使用正则表达式过滤输入 7.1 – 真实例子 – 用sed进行电子邮件替换 bash...这可以通过使用sed命令以及前面的电子邮件Regex修改版本完成。 ? sed——Unix“流编辑器”实用程序,允许强大文本文件转换。...要在终端中预览结果,而不是替换原来文本,只需省略-i标志。 注意——尽管上述命令适用于大多数Linux发行版,但是macOS使用BSD实现是sed,它在其支持Regex语法中受到更多限制。...要在MacOS上使用sed,并具有体面的正则表达式支持,我建议使用brew install gnu-sed安装sedGNU实现,然后从命令行使用gsed而不是sed

5.3K20

Linux系统开发: linux下正则表达式

1.1 正则表达式介绍 正则表达式就是为了处理大量文本|字符串而定义一套规则和模板。 通过定义这些特殊符号辅助,系统管理员就可以快速过滤,替换或输出需要字符串。...现在学是Linux中正则表达式,最常应用正则表达式命令是linux三剑客:grep(egrep),sed,awk。...又叫Extended RegEx 简称EREs) Perl正则表达式(Perl Regular Expression 又叫Perl RegEx 简称PREs) 1.3.1 基本正则表达式 BREs...,awk中,^则是匹配字符串开始 ^name匹配name开头 $ $ $ 匹配行尾,awk中,$则是匹配字符串结尾 注意:^$表示匹配空白 sh$匹配sh结尾 . . ....*$匹配任意字符结尾 1237*可匹配123,12378,不可匹配1237 *2可匹配里面所有有2内容 不支持 () () 匹配表达式,创建一个用于匹配子串,注意()有时可需用到转义字符。

1.4K10

awk与sed:关于多行样本

应该是非pattern结尾意思,这个答案应该是说把非90结尾换行符换位空。 这个答案应该是不可行sed默认单行模式。一次处理一,执行时发现,就算我们把换行符去掉了。...sed命令结束后。还是将它当成完整输出(也就是说,应该是自己主动又加上换行符了) 2. 有一位网友。...能够看出,sed N命令把第二接到第一后面,把第四接到第三后面,没有考虑到我们目标中:仅仅有非90结尾才把下一附加上来。...把下一附加上来,然后进入分支b myloop,在推断是不是以90结尾,这样重复读取,直到读到90结尾。 接下来模式空间读取工作已经完毕。进入下一个命令。替换。...假设90结尾,就输出当前行数据。

64310

Linux通配符和正则表达式通配符 区别_linux正则表达式语法

另外,这篇文章只针对Linux下文本过滤工具正则表达式进行讨论,其他一些编程语言,如C++(c regex,c++ regex,boost regex),java,python等都有自己正则表达式库...最常使用特殊字符如下: 字符 含义 ^ 指向一开头 $ 指向一结尾 . 任意单个字符 [] 字符范围。如[a-z] 如果想将上述字符用作普通字符,就需要在它们前面加上\字符。...:锚定结束 如:‘grep’匹配所有grep结尾。 . :匹配一个非换行符字符 如:‘gr.p’匹配gr后接一个任意字符,然后是p。...\< :锚定单词开始,如:‘\<grep’匹配包含grep开头单词。 \> :锚定单词结束,如‘grep\>’匹配包含grep结尾单词。...$ ls –l | grep ‘^a’ 通过管道过滤ls –l输出内容,只显示a开头。 $ grep ‘test’ d* 显示所有d开头文件中包含test

5K20

Linux常用命令 sed 使用简述

-f filename 则可以执行filename内sed命令; -r 让sed命令支持扩展正则表达式(默认是基础正则表达式); -i 直接修改读取文件内容,而不是由屏幕输出...,i \后面跟上字符串s(多行字符串可以用\n分隔),则会在当前选中前面都插入字符串s; p: print即打印,该命令会打印当前选择到屏幕上; s: 替换,通常s命令用法是这样...@linux:~/Linux迷] $ sed '2,$ a\linuxmi.com' LinuxMi.py 效果如下 2、i命令用法 主要在一前面加上我们需要东西...d用法一样 6、s命令用法 主要是替换内容,比如在文本里面把 regex 全部替换成regexp [linuxmi@linux:~/Linux迷] $ sed 's.../regex/regexp/g' LinuxMi.py g是全部内容意思 7、删除配置文件中#开头注释 [linuxmi@linux:~/Linux迷] $ sed

1.3K20

sed 使用教程 - 通读篇(30分钟入门系列)

执行流程 首先 sed 命令也是一处理文本,为每一执行相应命令,最后输出。 [@sed执行流程|center] 3....^ 表示一开头。如:/^#/ #开头匹配。 $ 表示一结尾。如:/}$/ }结尾匹配。 \< 表示词首。 如:\<abc 表示 abc 为首詞。 \> 表示词尾。...删除 d 由于sed命令是基于行为单位处理,所以这里也是删除,而且删除是模式空间缓存,只会影响输出,不会影响原来文件,格式如下: 命令格式:[address1[,address2]]d 例如删除匹配到...,依然全文本输出,这也是由于模式空间缓存都会被输出出来原因 只将匹配到内容写入新文件 sed多行处理功能 前面所看到sed编辑器命令都是针对单行数据执行操作,在sed编辑器读取数据流时,它会基于换行符位置将数据分成行...输出多行中第一 P P命令用于输出N命令创建多行文本模式空间中第一,也就是说读进来两,仅输出第一

4.1K240
领券