当前位置: 首页 > news >正文

学校网站模板下载在线心理健康网站建设

学校网站模板下载,在线心理健康网站建设,十堰最专业的网站建设公司,建设银行网站查询房贷信息查询目录 正则表达式 元字符 grep 案例 我在编写脚本的时候发现#xff0c;三个文本编辑的命令#xff08;grep、sed、awk#xff0c;被称为文本编辑三剑客#xff0c;我习惯叫它三巨头#xff09;用的还挺多的#xff0c;说实话我一开始学的时候也有些懵#xff0c;主要…目录 正则表达式 元字符 grep 案例 我在编写脚本的时候发现三个文本编辑的命令grep、sed、awk被称为文本编辑三剑客我习惯叫它三巨头用的还挺多的说实话我一开始学的时候也有些懵主要是太多太杂有那么个别些还有点难懂最近恰好有时间索性把三巨头相关的东西都整理出来方便日后生疏了再回顾一下顺便和大家一起交流学习。 在学三巨头之前首先要知道正则表达式 正则表达式 什么是正则表达式正则表达式又称规则表达式通常用于判断语句中是一种用于匹配字符串中字符组合的模式一般由普通字符字母、数字与特殊字符元字符组成 我们之前讲过文件测试是用 [ ]或者 test 实现的还有学习 if 语句的时候也是通过 [ ] 来进行条件判断。正则表达是也是用 [ ] 来做字符串匹配的只不过它所匹配的样式种类更多更齐全。 正则表达式直接使用的匹配规则是  [[  变量  ~  正则式  ]] 一个例子我们定义一个变量 num     看看它与正则式是否匹配输出结果是匹配     ~ 是匹配正则式的固定搭配测试的时候不要忘了加 [0-9] 是检验变量里是否有0-9的数字 这里你可能会疑问如果num s2d2j93  这种数字字母穿插的判断结果是什么呢 答案是仍然输出匹配 因为 [0-9] 只看你的变量中有没有数字我们之前在编写shell脚本的时候也遇到一个猜数字的脚本如何避免输入除数字外的其他字符呢 现在可以得到解答了只需要验证变量是否 ~ ^[0-9]$  就可以了。 我们都知道在grep命令中^是以什么什么开头而$是以什么什么结尾这样一组合是不是就通俗易懂了以数字开头以数字结尾那不就是匹配纯数字的字符串吗 我们来正反都验证一下结果不出我所料doge 元字符 通过上面这个例子想必应该对正则有了个大致的了解其实并不困难主要就是选项很多很杂常见的元字符有 [ ]定义一个字符类匹配括号内的任意一个字符。 例如 [abc] 可以匹配 a、b 或 c .匹配除换行符之外的任何单个字符 例如 a.c 可以匹配 abc、a1c、ac 等 *匹配前面的元素零次或多次 例如 ab*c 可以匹配 ac、abc、abbc、abbbc 等 和 * 一样但只能匹配前面的元素一次或多次不包括零次 所以 abc 只可以匹配 abc、abbc、abbbc 等不能匹配 ac ?匹配前面的元素零次或一次 例如ab?c 可以匹配 ac 或 abc ^匹配字符串的开始。 例如 ^abc 匹配以 abc 开头的字符串。 $匹配字符串的结束。 例如 abc$ 匹配以 abc 结尾的字符串。 [^]定义一个否定字符类匹配不在括号内的任意一个字符。 例如 [^abc] 匹配除了 a、b 和 c 之外的任意字符。 |或操作符匹配两者中的任意一个。 例如正则表达式 abc|def 可以匹配 abc 或 def。 ()分组用于将多个元素组合成一个单元并捕获匹配的文本。 例如 (abc) 可以匹配 abc、abcabc 等。 \{n\}匹配前面的元素恰好 n 次。 例如 a{3} 可以匹配 aaa。 \{n,\}匹配前面的元素至少 n 次。 例如 a{3,} 可以匹配 aaa、aaaa、aaaaa 等。 \{n,m\}匹配前面的元素至少 n 次但不超过 m 次。 例如 a{3,5} 可以匹配 aaa、aaaa、aaaaa。 \d匹配任意一个数字字符0-9。 例如 \d 可以匹配 1、2、3 等。 \w匹配任意一个字母、数字或下划线字符。 例如 \w 可以匹配 a、1、_ 等。 \s匹配任意一个空白字符空格、制表符、换行符等。 例如 \s 可以匹配空格、制表符等。 \D匹配任意一个非数字字符。 例如 \D 可以匹配 a、、 等。 其实还有一部分没有列出基本上用不到可能用到的就这么多了万一有遗漏我后续会补上。 正则表达式的规则就这么多大多数情况都是搭配三巨头使用的所以说接下来就可以开始学习三巨头了搭配 grep、sed、awk 等命令使用的时候含义是不变的但是使用的符号会有点出入所以接下来就通过大量的实例来进行讲解。 grep 首先肯定是从我们最为熟知也是使用过的 grep 命令开始grep命令最常用的参数可能就是 grep -v 还有 grep -i 了这两个都是它的基本选项我们接下来要了解它的输出控制选项所以说要和正则表达式搭配使用呢一个负责筛选过滤一个负责控制输出的内容。常用的有 -E 开启扩展的正则表达式 -c 计算找到 搜寻字符串 的次数 -o 只显示被模式匹配到的字符串 -w匹配整个单词 -n 输出行号 我创建了一个 123.txt 文件用来测试各种案例你们可以直接复制粘贴使用 #123.txthis is a test file for grep command. t contains various patterns and special characters.asic characters: abc, def, ghi 2. Digits: 123, 456, 789 3. Special characters: ., *, , ?, ^, $, [, ], {, }, |, (, ) 4. Word boundaries: start, end, middle on-word characters: , #, %, , ! scaped characters: \., \*, \, \?, \^, \$, \[, \], \{, \}, \|, \(, \) ultiple lines with the same pattern:patternpatternpattern Case sensitivity: Case, case, CASEWhole word matching: word, sword, reword hole line matching: This is a whole line. ontext lines:This is line before the match. his is the matching line. This is line after the match. ile names: file1.txt, file2.txt, file3.txt Directory names: dir1, dir2, dir3 xclude patterns: exclude this line Include patterns: include this line ecursive patterns:./dir1/file1.txt./dir2/file2.txt./dir3/file3.txt olor highlighting: highlight this ount matching lines: count this line Matching groups: group1, group2, group3 on-matching groups: nongroup1, nongroup2, nongroup3 ll lol lool loool loooool looooool looooooool loooooooooooooooooool 案例 先来个简单的吧找出 hole 并打印行号  grep -n hole 123.txt 打印出来有两个此时我们加一个w就可以只显示 hole 这个单词的了 那么相反如果我查找不含 hole 的 只需要加上 -v 就可以了也可以通过 [^] 来筛选前面不含w的 grep -n [^w]hole   (还有别的方法可以自己测试比如[^a-z]hole直接让前面不带字母等等) 接下来需要查找 test 或者 text 并打印行号-n 之后的例子就不特别说明了 grep -n te[sx]t 123.txt 这里用到了[ ] 匹配 s 或 x test 和 text 都被输出了出来 我们也可以通过 . 任意字符来完成这个操作 grep -n te.t 123.txt    有几个 . 就代表中间有几个任意字符 我们再来查找一下有数字的行        grep -n [0-9] 123.txt 下面我们来查找以数字开头的行 grep -n ^[0-9] 123.txt 以此类推假如以字母开头那就是 ^[a-z] 那么现在有一个疑问假如要查找不以字母开头的呢要知道除了字母数字还有特使字符和空格等开头的行而且字母也是有大小写的此时该怎么办呢 原理也差不多[^] 是过滤不含某些内容的那我们就不含字母 grep -n ^[^a-zA-Z] 123.txt         这个正则表达式同时过滤了小写字母和大写字母如果连数 字也要过滤掉那么就在a-zA-Z的随便哪个位置加上0-9就可 以了顺序无所谓的但最好按照a-z A-Z 的顺序不然不确 定会不会出现什么问题 附上过滤数字的运行截图 如果想查找以字母或数字结尾的那么和以什么什么为开头的一样在 [ ] 后面加上 $ 就可以了如图就不细说了↓ grep [789]$ 123.txt 过滤出来是只有9是亮着的因为 [ ] 匹配了 7 或者 8 或者 9 的字符串那么问一个简单的问题假如我就非要查找789这一个整体结尾的行该怎么办呢 额外提一句grep -n ^$ 123.txt  代表输出空行的行 接下来测试文件里的那么多 looool 要派上用场了 回过头来看咱前面提到的元字符是不是突然想到了什么 grep -n lo*l 123.txt              grep -n lol 123.txt 它们的输出结果应该 *  有ll而 没有除此之外输出结果应该一致 验证一下 一个新的问题出现了为什么  grep -n lol 123.txt  没有任何结果输出我仅仅是将 * 号改成了号按理来说不可能出现语法错误啊 我们来排错一下 grep -v lol 123.txt   整个文档都被输出出来了说明文档里没有能与 lol 匹配的行我们试着去文档里创捷新的一行只有lol 保存并退出 再来一次 grep -n lol 123.txt  真相了家人们grep过滤的时候读取的是 “lol” 这一整个字符串 并没有被当作是元字符我们给它加上一个 \ 转义符看看 这下成功了得到想要的结果了再回过头来看是不是和 lo*l 的输出只相差了一个 ll 现在我只想查找ll之间夹着 3-6 个 o 的行 grep -n lo\{3,6\}l 123.txt 其他的需求也可以依葫芦画瓢比如 至少 5个o 那就是 grep -n lo\{5,\}l 123.txt , 转义符不要忘记 grep过滤的功能远不止在过滤文件内容还可以搭配管道符号再写入脚本对脚本进行很大的优化 比如我们都知道ifconfig ens33  是查看网卡的内容 那么我们是不是可以通过一些条件约束使之只显示我们需要的内容呢比如说ip地址 很简单啊过滤inet开头那一行但是这样的输出结果无法直接作为纯数字传递给脚本参数等进行处理我们需要仅显示ip地址等 那么就需要过滤含有 [0-9].[0-9].[0-9].[0-9] 的行 ifconfig ens33 |grep -o [0-9]\\.[0-9]\\.[0-9]\\.[0-9]\ 学好三巨头还是要靠熟记各种参数元字符的含义并巧妙应用做到事半功倍的效果 另外还有sed 和 awk 我之后整理了差不多再进行讲解
http://www.pierceye.com/news/817382/

相关文章:

  • 淘宝网站开发成本武进建设局网站进不去
  • 比较好网站制作公司行业协会网站织梦模板
  • 牛人网络网站像wordpress一样的网站吗
  • 那种做任务的网站叫什么wordpress 数据库 旧Ip
  • 制作深圳网站建设百度推广广告收费标准
  • 电影采集网站建设国产做爰全免费的视频网站
  • 集团网站建设特点 助君长春seo公司网站
  • 网站域名备案 更改吗在线做文档的网站
  • 青海网站制作多少钱做网站教程pdf
  • dw做网站背景音乐wordpress 获取当前文章id
  • 上海鹭城建设集团网站icp备案查询
  • 企业站用什么程序做网站深圳手机报价网站
  • 网站开发国外研究状况建设部相关网站
  • 租赁网站开发台州网站优化
  • 网站开发人员工工资网站开发一个支付功能要好多钱
  • 工程建设管理网站源码网站怎样做地理位置定位
  • 太仓公司网站建设电话网络公关名词解释
  • 江门网站建设策划什么是网络营销职能
  • 北京网站托管毕设做网站是不是太low
  • 企业网站建设费用属管理费用吗重庆网站建设制作设计公司哪家好
  • 深圳营销型网站需要多少钱做网站个体户经营范围
  • php 手机网站 上传图片晋州做网站的联系电话
  • 云天下网站建设做抖音seo排名软件是否合法
  • 网站开发合同管辖权异议龙岩网上办事大厅官网
  • 建网站费用明细海口建设网站
  • 网站页面设计说明怎么写影视小程序源码
  • 传媒网站制作网站申请建设
  • 前端做项目的网站新密市城乡建设局网站
  • 网站app建设方案智能外呼系统
  • 创建网站免费注册wordpress 熊掌号代码