shell正则表达式
Shell脚本扩展 一 正确表达式 正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。 1.支持的命令: grep、vim、find、awk、sed等。 1、.代表任意单个字符,如:/l..e/与包含一个l,后跟两个字符,然后跟一个e的行相匹配 检索wang.txt文件中匹配s字符的。 2、^代表行的开始。^love 如:与所有love开头的行匹配 .txt文件中以N开头的。 3、$代表行的结束。love$ 如:与所有love结尾的行匹配 那么‘^$’ 就表示空行 通配符 .txt文件中匹配小写字母a到z之间的。 注意: [abc]表示匹配单个字符a或b或c [123]表示匹配单个字符1或2或3 [A-Z]表示匹配大写字母A-Z之间一个 [^a]表示取反,匹配除去小写字母a的。 5、* 用于修饰前导字符,表示前导字符出现0次或任意多次 .txt文件中出现0次或多次T的 6、?用于修饰前导字符,表示前导字符出现0或1次 7、+用于修饰前导字符出现1或多次 8、{n,m}用于修饰前导字符,表示前导字符出现n至m次(n和m都是整数,且n<m) 表示前导字符出现n至m次; n/m为整数,并且m>n; 其他形式: {n}连续的n个前导字符; {n,}连续的至少n个前导字符; .txt文件中出现2至4个n的 9、用于转义紧跟其后的单个特殊字符,使该特殊字符成为普通字符 .txt文件中含有.的。 10、|表示或如:a|b|c 匹配a或b或c。如:grep|sed匹配grep或sed .txt文件中含有a或b的。 11、(),将部分内容合成一个单位组,比如要搜索glad 或good可以如下'g(la|oo)d' 二、grep命令的用法 参数: 1. -A NUM,--after-context=NUM 除了列出符合行之外,并且列出后NUM行。 列出chai.txt文件中Tom行与后俩行 2.-B NUM,--before-context=NUM 与-A NUM 相对,但这此参数是显示除符合行之外并显示在它之前的NUM行。 列出.txt文件中Tom行与前俩行。 3、-C [NUM],-NUM,--context[=NUM] 列出符合行之外并列出上下各NUM行,默认值是2。 .txt文件中Tom行与前后俩行。 4、-c,--count 不显示符合样式行,只显示符合的总行数。若再加上-v,--invert-match,参数显示不符合的总行数 .txt文件中含有Tom的行数; .txt文件中不含有Tom的行数。 5、-i,--ignore-case 忽略大小写差别 .txt文件中含有tom(大小写)的行。 6、-n,--line-number 在匹配的行前面打印行号 .txt文件中含有tom(大小写)的行,并且打印出行号。 7、-v,--revert-match 反检索,只显示不匹配的行 .txt文件中不含有tom的行。 8、精确匹配: 例如在抽取字符串“ 48”,返回结果包含诸如484和483等包含“48”的其他字符串,实际上应精确抽取只包含48的各行。 精确列出.txt文件中含有30的行。 9、-s 不显示不存在或无匹配文本的错误信 xin.txt文件不存在,检索时候提示搜索不到的错误信息, 如果不要错误信息提示,则加上-s。 三、sed命令的用法 1sed是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。 2把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。 3文件内容并没有改变,除非你使用重定向存储输出。 1.替换: s命令 把.txt中The替换成,输出到aaa.txt文件中。 sed 替换命令 /../../分隔符(可以用其他符合代替) The 搜索的字符串 替换的字符串 <chai.txt>搜索的文件 aaa.txt输出到的文件 1.2 用& 表示匹配的字符串 有时可能会想在匹配到的字符串周围或附近加上一些字符. sed 默认只替换搜索字符串的第一次出现,利用/g 可以替换搜索字符串所有 如果需要对同一文件或行作多次修改,可以使用"-e" 选项 3.删除行:d命令 从某文件中删除包含"how" 的所有行 将passwd内容显示并打印行号,同时删除2到5行。 nl命令在linux系统中用来计算文件中行号。nl 可以将输出的文件内容自动的加上行号。 4.增加行:a命令(在指定的行后新增)或i命令(在指定的行前新增) a的后面可以接字符串,而这些字符串会在新的一行出现 在/etc/passwd的第二行后增加“XXXXX”字样的新行 将passwd内容显示并打印行号,同时在第二行后新增hello。 将passwd内容显示并打印行号,同时在第二行前新增hello。
如果要同时新增多行,则每行之间要用反斜杠来进行新行的添加
5、取代行:c命令 c的后面可以接字符串,这些字符串可以取代n1,n2之间的行 取代行 将passwd内容显示并打印行号,同时取代2到5行间内容。 6、打印:p命令 sed '/north/p' datafile 默认输出所有行,找到north的行重复打印 仅列出passwd文件中的第5到7行内容。
sed 的-i选项可以直接修改文件中的内容
6.扩展: 调用sed有三种方式: l在命令行键入命令 l将sed命令插入脚本文件,然后调用sed l将sed命令插入脚本文件,并使sed脚本可执行。 A、使用sed命令行格式为: sed [选项] sed命令 输入文件。 记住在命令行使用sed命令时,实际命令要加单引号。sed也允许加双引号。
B、使用sed脚本文件,格式为: sed [选项] -f sed脚本文件 输入文件
C、要使用第一行具有sed命令解释器的sed脚本文件,其格式为: sed脚本文件 [选项] 输入文件 第一行是sed命令解释行。脚本在这一行查找sed以运行命令,这里定位在/bin。 第二行以/company/开始,这是附加操作起始位置。a通知sed 是一个附加操作,首先应插入二个新行。 第三、四行是附加操作要加入到拷贝的实际文本。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- vim 插件学习记录
- scala – 为什么类不能用相同签名的方法扩展traits?
- angularjs – 如何测试必须使用testacular和jasmine呈现的H
- Lwuit tab和list组合使用遇到的问题
- angularjs – 如何使用Controller作为语法访问$on,$emit,$b
- scala – SBT常用构建设置
- 向RootTools v4.2 shell添加命令时,Android应用程序崩溃
- linux下文件形式的更新与回滚(增加回滚删除与新增后的回滚)
- squid代理使用yum源
- angularjs – angular-translate – 用于determinPreferred
- angularjs – Django Rest Framework JWT:如何在
- scala – “`class declaration head` {val_name
- webservice里面wsdl后缀和asmx是干嘛用的,区别是
- angular-material – 使用Angular Material Desi
- 最简的restful webservice实现,提供get和post服
- 创建webservice 用service.xml配置(复杂点的方法
- axis服务发布或接口调用(IncompatibleClassChang
- 在scala中使用find函数
- 抓虫记之五:Webservice总是调用不了
- scala – Spark:写入Avro文件