首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

子字符串匹配常用算法总结

"坏字符规则":后移位数 = 坏字符位置 - 搜索词上一次出现位置(如果"坏字符"包含在搜索词之中,则上一次出现位置为 -1) 上图中,比较是P和E,出现在第6位(0开始),然后P上一次位置是...基本思想 长度为M字符串对应着一个R进制M位数, 为了用一张大小为Q散列表来保存这种类型键, 需要一个能够将R进制M位数转化为一个0到Q-1之间int函数, 这里可以用除留取余法....(匹配) 计算散函数 在实际,对于5位数值, 只需要使用int就可以完成所有需要计算, 但是当模式长度太大, 我们使用Horner方法计算模式字符串 2 % 997 = 2 2 6 %...算法实现: 构造函数为模式字符串计算了散patHash并在变量中保存了R^(M-1) mod Q, hashSearch()计算了文本前M个字母并和模式字符串比较, 如果没有匹配..., 文本指针继续下移一位, 计算新再次比较,知道成功结束.

1.2K20

常用 linux 命令集锦

options可选参数: -i :忽略大小写 -c :打印匹配行数 -l :从多个文件查找包含匹配项 -v :查找包含匹配行 -n:打印包含匹配行和行标 正则表达式参数...所有的单个字符 * 所有字符,长度可以为0 其他: 明确要求搜索子目录(-r意思是递归):grep -r 忽略子目录:grep -d skip 注意:grep 是搜索文件内容搜索文件名...-n -number 由 1 开始对所有输出行数编号 -b -number-nonblank 和 -n 相似,只不过对于空白行编号 -s -squeeze-blank 当遇到有连续行以上空白行...关系表达式:可以用下面运算符表关系运算符进行操作,可以是字符串数字比较,如$2>%1选择第二个字段比第一个字段长行。 模式匹配表达式:用运算符~(匹配)和~!(匹配)。...awk可跟踪域个数,并在内建变量NF中保存该。如 域分隔符 内建变量FS保存输入域分隔符,默认是空格tab。我们可以通过-F命令行选项修改FS

4.4K10

生信人自我修养:Linux 命令速查手册(全文引用)

,当只有一个文件,相当于显示所有文件内容 cat file1 file2 # 合并file1和file2内容,并在屏幕上输出 cat R1.fq.gz R2.fq.gz # 可以合并gzip...,通常测试一个记录、字段字符串是否与一个正则表达式匹配匹配返回 1匹配返回 0。...正则表达式用个反斜杠/包围。 expr ~ /r/ # 评估expr是否与r匹配匹配意思是expr一个子串是否在正则表达式r定义字符串集中。.../r/ { action }, $0 ~ /r/ { action } # 者相同, /r/ 等于 $0 ~ /r/ 任何表达式都可以放到~和!~右边或者内建需要正则表达式地方。...';' -v OFS='\t' '{print $1,$2,$NF}' file # 读入文件以逗号;分隔打印1,第2和最后一,并且打印以制表符作为分隔符 number=10;awk

3.9K40

生信人自我修养:Linux 命令速查手册

,当只有一个文件,相当于显示所有文件内容 cat file1 file2 # 合并file1和file2内容,并在屏幕上输出 cat R1.fq.gz R2.fq.gz # 可以合并gzip...,通常测试一个记录、字段字符串是否与一个正则表达式匹配匹配返回 1匹配返回 0。...正则表达式用个反斜杠/包围。 expr ~ /r/ # 评估expr是否与r匹配匹配意思是expr一个子串是否在正则表达式r定义字符串集中。.../r/ { action }, $0 ~ /r/ { action } # 者相同, /r/ 等于 $0 ~ /r/ 任何表达式都可以放到~和!~右边或者内建需要正则表达式地方。...';' -v OFS='\t' '{print $1,$2,$NF}' file # 读入文件以逗号;分隔打印1,第2和最后一,并且打印以制表符作为分隔符 number=10;awk

7.3K21

速读原著-TCPIP(IP选路)

在第1 0,我们将简单讨论动态选路和选路信息协议 R I P(Routing Information Protocol)。在本章,我们主要目的是了解单个I P层如何作出路由决策。...在后种情况下,由于指定了环回接口名字 I P地址,第一次搜索就找到匹配主机地址,因此报文直接被送给环回驱动程序,然后由驱动程序把报文放入 I P输出队列。...到达主机网络路由如果不是直接相连,那么就必须加入路由表。一个常用方法是在系统引导显式地在初始化文件运行 r o u t e命令。...r o u t e命令在度量值大于0要为该路由设置G标志,否则,当耗费0就不设置G标志。 不幸是,几乎没有系统愿意在启动文件包含r o u t e命令。...还应该指出是,n e t s t a t输出第3和第4行(接口名为s l 0)由S L I P软件在启动创建,并在关闭删除. 9.2.4 没有到达目的地路由 我们所有的例子都假定对路由表搜索能找到匹配表项

1.3K30

grep三剑客入门与进阶指南

-R/-r 此参数效果和指定“-d recurse”参数相同,递归搜索。(常用) -s 不显示错误信息。 -v 反转查找,即搜索包含字符串文件 (显示除字符串其他类容)。...-b -o "not" #打印样式匹配所位于字符字节偏移: # 7:not #只在目录中所有的.php和.html文件递归搜索字符"main()" grep "main()" ....-r --exclude-from filelist.txt #使用0字节后缀grep与xargs: #测试文件: echo "aaa" > file1 echo "bbb" > file2 echo...-L "pageid:" -R . | grep -E "md$" 注意事项:Find命令与Grep命令区别 1)Find在系统搜索条件文件名,如需要匹配,使用通配符匹配是完全匹配. 2)Grep...d' regular_express.txt    #{0,1} $ egrep -n 'g(la|oo)d' regular_express.txt #也就是搜寻(glad) good 这个字符串

93110

子字符串匹配常用算法总结

"坏字符规则":后移位数 = 坏字符位置 - 搜索词上一次出现位置(如果"坏字符"包含在搜索词之中,则上一次出现位置为 -1) 上图中,比较是P和E,出现在第6位(0开始),然后P上一次位置是...基本思想 长度为M字符串对应着一个R进制M位数, 为了用一张大小为Q散列表来保存这种类型键, 需要一个能够将R进制M位数转化为一个0到Q-1之间int函数, 这里可以用除留取余法....(匹配) 计算散函数 在实际,对于5位数值, 只需要使用int就可以完成所有需要计算, 但是当模式长度太大, 我们使用Horner方法计算模式字符串 2 % 997 = 2 2 6...算法实现: 构造函数为模式字符串计算了散patHash并在变量中保存了R^(M-1) mod Q, hashSearch()计算了文本前M个字母并和模式字符串比较, 如果没有匹配..., 文本指针继续下移一位, 计算新再次比较,知道成功结束.

89820

Linux 基础命令(收藏大全)

查找文件/目录字节为0文件(即空文件) find / -empty ----------- 命令: grep 功能: 通过正则表达式查找文件关键字 参数: -i:忽略大小写 -c:打印匹配行数...-C:打印匹配上下文(上N行,下N行)多少行 -l:列出匹配文件名 -L:列出匹配文件名 -n:打印包含匹配行和行标 -w:仅匹配指定单词而非关键字 -e:索引匹配字串 -r:递归查询...匹配,即匹配01个正则表达式 2.支持+匹配,即匹配1到N个正则表达式 3.支持”关系”匹配 4.在查找范围,可直接用{a,z},而不需要””符号 5.可以被()来包含正则表达式进行分组 6.参数与...查找以Dd字符为开头行 egrep '(^D|^d)' egrepcmd.txt 15.匹配以D开头01个字符 egrep ^D?...-c 显示输出,并在文本行前加出现次数,但如果重复行连续,则不认为是重 复行 -d 只显示重复行 -u 只显示不重复1.

2.1K30

Linux 基础命令(收藏大全)

查找文件/目录字节为0文件(即空文件) find / -empty ----------- 命令: grep 功能: 通过正则表达式查找文件关键字 参数: -i:忽略大小写 -c:打印匹配行数...-C:打印匹配上下文(上N行,下N行)多少行 -l:列出匹配文件名 -L:列出匹配文件名 -n:打印包含匹配行和行标 -w:仅匹配指定单词而非关键字 -e:索引匹配字串 -r:递归查询...匹配,即匹配01个正则表达式 2.支持+匹配,即匹配1到N个正则表达式 3.支持”关系”匹配 4.在查找范围,可直接用{a,z},而不需要””符号 5.可以被()来包含正则表达式进行分组 6.参数与...查找以Dd字符为开头行 egrep '(^D|^d)' egrepcmd.txt 15.匹配以D开头01个字符 egrep ^D?...-c 显示输出,并在文本行前加出现次数,但如果重复行连续,则不认为是重 复行 -d 只显示重复行 -u 只显示不重复1.

1.9K40

Linux 基础命令(收藏大全)

查找文件/目录字节为0文件(即空文件) find / -empty ----------- 命令: grep 功能: 通过正则表达式查找文件关键字 参数: -i:忽略大小写 -c:打印匹配行数...-C:打印匹配上下文(上N行,下N行)多少行 -l:列出匹配文件名 -L:列出匹配文件名 -n:打印包含匹配行和行标 -w:仅匹配指定单词而非关键字 -e:索引匹配字串 -r:递归查询...匹配,即匹配01个正则表达式 2.支持+匹配,即匹配1到N个正则表达式 3.支持”关系”匹配 4.在查找范围,可直接用{a,z},而不需要””符号 5.可以被()来包含正则表达式进行分组 6.参数与...查找以Dd字符为开头行 egrep '(^D|^d)' egrepcmd.txt 15.匹配以D开头01个字符 egrep ^D?...-c 显示输出,并在文本行前加出现次数,但如果重复行连续,则不认为是重 复行 -d 只显示重复行 -u 只显示不重复1.

1.2K30

文本处理三驾马车之 awk

,通常是文件一行,保存在字段变量 0,记录可以被分割成字段,保存在变量 1, 2,..., NF 。...,通常测试一个记录、字段字符串是否与一个正则表达式匹配匹配返回 1匹配返回 0。...正则表达式用个反斜杠/包围。 expr ~ /r/ # 评估expr是否与r匹配匹配意思是expr一个子串是否在正则表达式r定义字符串集中。.../r/ { action }, $0 ~ /r/ { action } # 者相同, /r/ 等于 $0 ~ /r/ 任何表达式都可以放到~和!~右边或者内建需要正则表达式地方。...,$NF}' file # 读入文件以逗号;分隔打印1,第2和最后一,并且打印以制表符作为分隔符 number=10;awk -v n=$number'{print n}' file

13910

嘀~正则表达式快速上手指南(下篇)

事实上,之所以我们知道如何处理,是因为我们在写这个脚本反复地尝试过。编写代码是一个迭代过程。值得注意是,即使教程看起来是线性,即使教程看起来是直截了当,但实践需要更多尝试。...如果 recipient 不为 None, 使用 re.search() 来查找包含发件人邮箱地址和姓名匹配对象,否则,我们将传递Noner_email 和 r_name 。...仔细留意下数据就会发现email头部采用字符串 "Status: 0" "Status: R0"作为结束,并在下一封邮件 From r 字符串前结束,我们可以使用 Status:\s*\w*\n*...emails_df['sender_email'] 选择了标记为 sender_email,接下来,如果在该匹配到 子字符串 "maktoob" "spinfinder" ,则str.contains...第1步,查找包含字符串"@maktoob" "sender_email" 对应行索引。请留意我们是如何使用正则表达式来完成这项任务。 ?

4K10

awk 进阶使用案例

关系表达式:可以用下面运算符表关系运算符进行操作,可以是字符串数字比较,如$2>%1选择第二个字段比第一个字段长行。 模式匹配表达式:用运算符~(匹配)和~!(匹配)。...域 记录每个单词称做“域”,默认情况下以空格tab分隔。awk可跟踪域个数,并在内建变量NF中保存该。...如 awk '{print $1,$3}' test将打印test文件第一和第三个以空格分开(域)。 域分隔符 内建变量FS保存输入域分隔符,默认是空格tab。...如awk '$1 ~/^root/' test将显示test文件第一以root开头行。 比较表达式(三元运算符) conditional expression1 ?...在END模块,for循环被用于循环整个数组,从下标为0元素开始,打印那些存储在数组。因为下标是关健字,所以它不一定从0开始,可以从任何开始。

1.8K20

使用grep精确匹配一个单词

-G      将范本样式视为普通表示法来使用。 -h       在显示符合范本样式那一之前,标示该所属文件名称。...9]+" [root@test ~]# egrep "[1-9]+" 6) 只输出文件匹配部分 -o 选项: [root@test ~]# echo this is a test line....@test ~]# cat file_name | grep "text" -n 9)多个文件 [root@test ~]# grep "text" -n file_1 file_2 10)打印样式匹配所位于字符字节偏移...-r --exclude-from filelist 19)使用0字节后缀grep与xargs: #测试文件: [root@test ~]# echo "aaa" > file1 [root@test...rm 20)执行后会删除file1和file3,grep输出用-Z选项来指定以0字节作为终结符文件名(\0),xargs -0 读取输入并用0字节终结符分隔文件名,然后删除匹配文件,-Z通常和-l结合使用

12.3K50

awk 简单使用教程

- END匹配任何输入文件,但是执行动作块所有动作,它在整个输入文件处理完成后被执行,也就是后处理。...下面展示一些不同匹配写法:打印匹配行 awk -F: '{if($3==0) print}' /etc/passwd 匹配大于7行,打印数和整行 awk -F: 'NF>7 {...print NF,$0}' /etc/passwd 打印数字开头行 awk '/^[0-9]/{print $0}' group.txt 匹配包含rootnetucp任意行 awk...(s,r) 测试s是否包含匹配r字符串 split(s,a,fs)在fs上将s分成序列a sub(s,) 用$0最左边也是最长字符串替代 subtr(s...如果当前行匹配该样式,则执行{ }语句 3) 当读至输入流末尾,执行END { commands }语句块实用例子(持续更新)在这里会记录一下我日常实用觉得比较实用例子,持续更新。

15400

Linux 【命令】

.* # 匹配0多个字符(可有可无) [0-9a-z] # 匹配括号内任意一个字符 (linux)+ # 出现多次Linux单词 (web){2} #web出现次以上 \ # 屏蔽转义 grep...NF   # 字段数量变量 NR   # 每行记录号,多文件记录递增 /[0-9][0-9]+/   # 个以上数字 /[0-9][0-9]*/   # 一个一个以上数字 -F'[:#/]...=   # 不等于,精确比较 &&   # 逻辑与 ||   # 逻辑 +    # 匹配表示11个以上 print & $0: print 是awk打印指定内容主要命令 awk '{print...~// # 字段匹配 ~/a1|a2/ # 字段匹配a1a2 awk '/mysql/' /etc/passwd # 匹配所有 包含 "mysql" 关键字行 awk '!...~//字段匹配 ~/a1|a2/字段匹配a1a2 awk '/mysql/' /etc/passwd awk '/mysql/{print }' /etc/passwd awk '/mysql

19.4K20

Linux文本处理工具浅谈-awk sed grep

{RS="/"} {print $0}' /etc/passwd 5、以一个多个/为行分割符,打印第二行第二分隔符为默认空格,并打印行号 awk 'BEGIN{RS="[/]+"} NR...7、以/为分隔符,匹配倒数第二行s或者没有s后面是bin整行 awk -F "/" '$(NF-1)~/(s|)bin/' /etc/passwd 8、匹配第一以ssh或者ftpmysql...另存文件 e 执行bash命令 q 继续往下读取 概括流程:Sed软件从文件管道读取一行,处理一行,输出一行;再读取一行,再处理一行,再输出一行…… 增删改查 a 追加文本到指定行后 i...功能可以记住正则表达式一部分,其中,\1为第一个记住模式即第一个小括号匹配内容,\2第二记住模式,即第二个小括号匹配内容,sed最多可以记住9个。...内容为: test liyao oldboy 请给出输出 test.txt 文件内容包含 oldboy 字符串命令。

3.5K41
领券