首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

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

    "坏字符规则":后移位数 = 坏字符的位置 - 搜索词中的上一次出现位置(如果"坏字符"不包含在搜索词之中,则上一次出现位置为 -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.5K20

    常用 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的值。

    5.2K10

    速读原著-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.6K30

    生信人的自我修养: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

    4.8K40

    生信人的自我修养: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

    8.2K22

    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 这两个字符串

    1.4K10

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

    "坏字符规则":后移位数 = 坏字符的位置 - 搜索词中的上一次出现位置(如果"坏字符"不包含在搜索词之中,则上一次出现位置为 -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.1K20

    Linux 基础命令(收藏大全)

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

    2.2K40

    Linux 基础命令(收藏大全)

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

    2.5K30

    文本处理三驾马车之 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

    47410

    Linux 基础命令(收藏大全)

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

    1.5K30

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

    事实上,之所以我们知道如何处理,是因为我们在写这个脚本时反复地尝试过。编写代码是一个迭代过程。值得注意的是,即使教程看起来是线性的,即使教程看起来是直截了当的,但实践中需要更多的尝试。...如果 recipient 不为 None, 使用 re.search() 来查找包含发件人邮箱地址和姓名的匹配对象,否则,我们将传递None值给 r_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" 对应的行索引。请留意我们是如何使用正则表达式来完成这项任务的。 ?

    5.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开始,可以从任何值开始。

    2.5K20

    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 匹配包含root或net或ucp的任意行 awk...(s,r) 测试s中是否包含匹配r的字符串 split(s,a,fs)在fs上将s分成序列a sub(s,) 用$0中最左边也是最长的字符串替代 subtr(s...如果当前行匹配该样式,则执行{ }中的语句 3) 当读至输入流末尾时,执行END { commands }语句块实用例子(持续更新)在这里会记录一下我日常实用的觉得比较实用的例子,持续更新。

    76700

    使用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结合使用

    14K50

    Linux 【命令】

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

    20.8K21

    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或者ftp或mysql...另存文件 e 执行bash命令 q 不继续往下读取 概括流程:Sed软件从文件或管道中读取一行,处理一行,输出一行;再读取一行,再处理一行,再输出一行…… 增删改查 a 追加文本到指定行后 i...的功能可以记住正则表达式的一部分,其中,\1为第一个记住的模式即第一个小括号中的匹配内容,\2第二记住的模式,即第二个小括号中的匹配内容,sed最多可以记住9个。...内容为: test liyao oldboy 请给出输出 test.txt 文件内容时,不包含 oldboy 字符串的命令。

    4K41
    领券