模式匹配

shell脚本基础和grep文本处理工具企业应用3

梦想与她 提交于 2019-12-02 16:15:57
文本处理工具: linux上文本处理三剑客 grep,egrep,fgrep:文本过滤工具(模式:pattern)工具 grep:默认支持的是基本正则表达式;-E支持扩展正则表达式,-F不支持正则表达式 egrep:默认支持的是扩展正则表达式;-G支持基本正则表达式,-F不支持正则表达式 fgrep:默认不支持正则表达式;-G支持基本正则表达式,-E支持扩展正则表达式 sed:stream editor,流编辑器,文本编辑工具 awk:linux上的实现为gawk,文本报告生成器(格式化文本) 正则表达式:Regual Expression,REGEXP 由一类特殊字符及文本字符所编写的模式,其中有些字符不表示其字面意义,而是用于表示控制或通配的功能 分两类: 基本正则表达式:BRE 扩展正则表达式:ERE 元字符:\(hello[[:space:]]\+\)\+ grep:Global search REgular expression and Print out the line 作用:文本搜索工具,根据用户指定的“模式(过滤条件)”对目标文本逐行进行匹配检查;打印匹配到的行 模式:由正则表达式的元字符及文本字符所编写出的过滤条件 正则表达式引擎: grep [OPTIONS] PATTERN [FILE...] grep [OPTIONS] [-e PATTERN | -f

modsecurity配置指令学习

帅比萌擦擦* 提交于 2019-12-02 14:46:57
事务(transactions) Console(控制台) 1 Introduction Modsecurity是保护网络应用安全的工作。不,从零开始。我常称modsecurity为WAF(网络应用防火墙),这是种被广泛接受的叫法,它指的是为保护网络应用而专门设计的产品族。也有些时候我称它为HTTP入侵检测工具,我认为这个称呼更好的描述了modsecurity做了什么。 Understanding ModSecurity 像Apache为其他模块所做的一样,Apache为modsecurity处理一些基础任务: 1、 加密解密 2、 破坏HTTP请求的入站连接流 3、 部分性解析HTTP请求 4、 引导modsecurity,选择正确的配置文本(<VirtualHost>,<Location>等) 5、 De-chunks必需的请求体 反向代理模式时Apache会执行几个别的任务: 1、 请求转发到后端服务器(SSL或者非SSL) 2、 部分性解析HTTP响应 3、 De-chunks必需的响应体 What ModSecurity Does Modsecurity提供的功能大概能分成四个部分: Parsing 解析: Modsecurity会努力解析尽可能多的数据。Security-conscientious解析器会提取储存数据,义工在规则中使用,并支持一定的数据格式。

grep

◇◆丶佛笑我妖孽 提交于 2019-12-02 12:28:32
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/qq_33283716/article/details/80881765 grep介绍 过滤来自一个文件或标准输入匹配模式内容。 除了 grep 外,还有 egrep、fgrep。egrep 是 grep 的扩展,相当于 grep -E。fgrep 相当于 grep - f,用的少。 Usage: grep [OPTION]... PATTERN [FILE]... 支持的正则 | 描述 ---|--- -E,--extended-regexp | 模式是扩展正则表达式(ERE) -F,--fixed-strings | 模式是换行分隔固定字符串 -G,--basic-regexp | 模式是基本正则表达式(BRE) -P,--perl-regexp | 模式是 Perl 正则表达式 -e,--regexp=PATTERN | 使用模式匹配,可指定多个模式匹配 -f,--file=FILE | 从文件每一行获取模式 -i,--ignore-case | 忽略大小写 -w,--word-regexp | 模式匹配整个单词 -x,--line-regexp | 模式匹配整行 -v,--invert-match |

Nine Iptables与Firewalld防火墙

亡梦爱人 提交于 2019-12-02 06:38:30
防火墙管理工具   防火墙策略可以基于流量的源目地址、端口号、协议、应用等信息来定制,然后防火墙使用预先定制的策略规则监控出入的流量,若流量与某一条策略规则相匹配,则执行相应的处理,反之则丢弃。这样一来,就可以保证仅有合法的流量在企业内网和外部公网之间流动了。   在RHEL 7系统中,firewalld防火墙取代了iptables防火墙。iptables与firewalld都不是真正的防火墙,它们都只是用来定义防火墙策略的防火墙管理工具而已,或者说,它们只是一种服务。iptables服务会把配置好的防火墙策略交由内核层面的netfilter网络过滤器来处理,而firewalld服务则是把配置好的防火墙策略交由内核层面的nftables包过滤框架来处理。换句话说,当前在Linux系统中其实存在多个防火墙管理工具,旨在方便运维人员管理Linux系统中的防火墙策略,我们只需要配置妥当其中的一个就足够了。 iptables   在早期的Linux系统中,默认使用的是iptables防火墙管理服务来配置防火墙。尽管新型的firewalld防火墙管理服务已经被投入使用多年,但是大量的企业在生产环境中依然出于各种原因而继续使用iptables。   各个防火墙管理工具的配置思路是一致的,在掌握了iptables后再学习其他防火墙管理工具时,也有借鉴意义。 策略与规则链  

[vim]编辑器之神

你离开我真会死。 提交于 2019-12-02 06:06:22
移动 编辑 hjkl w 移动到下一个单词首 b 移动到上一个单词的首 e 移动到下一个单词的尾部 ge 移动到上一个单词的尾部 $ 移动到行尾第一个非空字符 ^ 移动到行首的第一个非空字符 0 也可以移动到行首的第一个非空字符 fx find x 移动到第一个x上 向右搜索 Fx 向左 tx to x 移动到第一个x的前一个字符 向右 Tx 向左 % 跳到匹配的括号() [] {} 上去 gg 跳转到第一行 G 跳转到最后一行 33G 跳转到33行 p 用于将删除的内容取回来 put 放到光标之后 P 之前 xp 交换两个字符 比如teh 先将光标放在e上 然后xp 即可变成the 其实就是先将e 删掉然后光标自动到h上,然后p 取回放置 yw 复制一个word 但是包含word的后面的空白符 ye 则不包含空白符 yy 复制一行 y$ 复制到行尾 yy 复制到剪切板 p 将剪切板的内容put 文本对象 daw 删除一个单词 delete a word 贯标置于单词的任意位置 cis 修改一行 change inner sentence as visual模式下 选中一行 normal 模式 x 删除一个字符 X 删除当前的前一个字符 dd 删除一行 J 删除该行结尾的换行符 u 撤销 ctrl r 反撤销 o 当前行的下面一行 进入insert模式 O 当前行的上面一行

Vim编译器的相关知识

六月ゝ 毕业季﹏ 提交于 2019-12-02 03:14:35
Vim编译器相关知识 1.关于Vim编译器 在热门Linux操作系统中都会默认安装一款超好用的文本编辑器——名字叫“ vim ”, vim 是 vi 编辑器的升级版。 vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。 2.Vim的几种模式 命令模式:控制光标移动,可对文本进行删除、复制、粘贴等工作。 输入模式:正常的文本录入。 末行模式:保存、退出与设置编辑环境。 记住每次运行vim编辑器后都默认是“ 命令模式 ”,需要先进入到“ 输入模式 ”后再进行编写文档的工作,而每次编辑完成需先返回到“ 命令模式 ”后再进入“ 末行模式 ”对文本的保存或退出操作。 3.启用vim vim -c cmd file: 在打开文件前,先执行指定的命令; vim -r file: 恢复上次异常退出的文件; vim -R file: 以只读的方式打开文件,但可以强制保存 vim -M file: 以只读的方式打开文件,不可以强制保存; vim -y num file: 将编辑窗口的大小设为num行; vim + file: 从文件的末尾开始; vim +num file: 从第num行开始; vim +/string file: 打开file,并将光标停留在第一个找到的string上。 vim --remote file: 用已有的vim进程打开指定的文件。

正则表达式的基本语法

独自空忆成欢 提交于 2019-12-02 02:58:08
本文摘自LTP.NET知识库。 正则表达式的形式一般如下: /love/ 其中位于“/”定界符之间的部分就是将要在目标对象中进行匹配的模式。 用户只要把希望查找匹配对象的模式内容放入“/”定界符之间即可。 为了能够使用户更加灵活的定制模式内容,正则表达式提供了专门的“ 元字符 ”。 所谓元字符就是指那些在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式。 较为常用的元字符包括: “+”, “*”,以及 “?”。 其中, “+” 元字符规定其前导字符必须在目标对象中连续出现一次或多次, **“*”**元字符规定其前导字符必须在目标对象中出现零次或连续多次, “?” 元字符规定其前导对象必须在目标对象中连续出现零次或一次。 下面,就让我们来看一下正则表达式元字符的具体应用。 /fo+/ 因为上述正则表达式中包含“+”元字符,表示可以与目标对象中的 “fool”, “fo”, 或者 “football”等在字母f后面连续出现一个或多个字母o的字符串相匹配。 /eg*/ 因为上述正则表达式中包含“*”元字符,表示可以与目标对象中的 “easy”, “ego”, 或者 “egg”等在字母e后面连续出现零个或多个字母g的字符串相匹配。 /Wil?/ 因为上述正则表达式中包含“?”元字符,表示可以与目标对象中的 “Win”, 或者

17 串 模式匹配算法

有些话、适合烂在心里 提交于 2019-12-02 02:57:17
模式匹配算法: #define MAXSIZE 255 //串的顺序存储结构 typedef struct{ char ch[MAXSIZE+1]; //存储串的以为数组(必须是 char 型)从下标为1号的元素开始存储 int length; //串的当前长度 }SqString; //模式匹配 //确定主串中所含子串(模式串)第一次出现的位置(定位) //BF算法:暴力破解,穷举法,简单匹配算法,一个一个比较, int Index_BF(SqString S, SqString T){ //S:主串 T:模式串 int i=1, j=1; while(i<=S.length && j<=T.length){ if(S.ch[i] == T.ch[j]){ //若主串和子串匹配,则各自的游标i,j分别后移 i++; //如果能成功匹配,则i,j的值会一直增加,知道大于或等于T.length,然后退出while循环 j++; }else{ //匹配失败,说明子串和当前下标开始的主串的一段不匹配,回溯 i = i-j+2; //核心算法,两串的游标分别回到位置,为下一次匹配做准备 j=1; } } //匹配结束 /* 包含两个可能,一:找到了符合匹配条件的串的位置(j>T.length); 二:匹配失败 */ if(j>T.length){ return (i-T.length);

字符串模式匹配——KMP算法

核能气质少年 提交于 2019-12-01 16:53:10
KMP算法匹配字符串 朴素匹配算法   字符串的模式匹配的方法刚开始是朴素匹配算法,也就是经常说的暴力匹配,说白了就是用子串去和父串一个一个匹配,从父串的第一个字符开始匹配,如果匹配到某一个失配了,就重新去从父串的下一个字符开始匹配,这样的算法虽然理解起来容易,但是算法的时间复杂度无疑是很高的,假如父串是一个很长的字符串,而字串恰恰不和父串匹配,那无疑是对CPU的迫害。   下面贴几张图看看这种朴素匹配算法: 但是第四个出现失配,就得重新让字串去和父串的第二个字符匹配,发现第二个也不匹配,只能再次匹配第三个,如下:   这样下来时间复杂度大大变高,但是通过上帝视角我们可以发现其实第二个完全不用试,但是计算机不知道啊,所以我们就需要一个更好的算法来解决这个问题,这个算法就是要在朴素算法的基础上额外告诉计算机哪些地方不用尝试,可能我上面的这个例子举得不太恰当,但是这个算法的额外功能就是告诉了计算机如果某个位置失配了应该去尝试哪个位置。    KMP算法——和计算机的友好交流   前面我们说KMP算法其实就是告诉计算机如果某个位置失配后应该往哪个位置回溯。而这个功能的实现其实只需要一个next数组,而这个数组也恰恰是这个算法的核心所在。 next数组   这个数组里面存储的就是字串中每个位置失配后应该回溯的下标。举个例子,比如第9个元素失配后应该回溯到第3个再次匹配尝试

Python - 正则表达式 - 第二十二天

江枫思渺然 提交于 2019-12-01 16:23:12
正则表达式 - 教程 正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符")。 正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。 正则表达式是繁琐的,但它是强大的,学会之后的应用会让你除了提高效率外,会给你带来绝对的成就感。只要认真阅读本教程,加上应用的时候进行一定的参考,掌握正则表达式不是问题。 许多程序设计语言都支持利用正则表达式进行字符串操作。 以下实例从字符串 str 中找出数字: 实例 从字符串 str 中提取数字部分的内容(匹配一次): var str = " abc123def " ; var patt1 = / [ 0 - 9 ] +/; document . write ( str . match ( patt1 ) ) ; 以下标记的文本是获得的匹配的表达式: 123 正则表达式 - 简介 除非您以前使用过正则表达式,否则您可能不熟悉一些术语。但是,毫无疑问,您已经使用过不涉及脚本的某些正则表达式概念。 例如,您很可能使用 ? 和 * 通配符来查找硬盘上的文件。 ? 通配符匹配文件名中的 0 个或 1 个字符,而 * 通配符匹配零个或多个字符。像 data(\w)?\.dat 这样的模式将查找下列文件: data.dat data1.dat data2.dat