首页 > 代码库 > 鸟书shell 学习笔记(二) shell中正则表达式相关
鸟书shell 学习笔记(二) shell中正则表达式相关
通配符与正则表达式的区别
通配符是bash原生支持的语法,正则表达式是处理字符串的一种表示方式, 正则表达式需要支持的工具支持才可以
语系设置 : export LANG=C
grep alias 设置 : grep --color=auto
grep 的一些高级参数
grep [-A] [-B] ‘搜寻字符串‘ filename //同时输出之前的k行和之后的m行
-A : 后面可加数字,表示列出改行以及之后的n行
-B : 列出前面几行
搜寻关键字如果中间使用正则表达式的话,则正则表达式部分需要加上[]
eg : grep ‘[a-z]oooo‘ filename
匹配行首 ‘^string‘ 但是 ‘[^s]string‘则表示排除s这个字母
匹配行尾 ‘string$‘
eg:排除注释行,和空行
grep -v ‘^$‘ /etc/profile | grep -v -n ‘^[[:blank:]]*#‘
sed 用法
sed [-nefr] [动作] sed可以直接在文件上进行操作
选项与参数:
-n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN
的数据一般都会被列出到萤幕上。但如果加上 -n 参数后,则只有经过
sed 特殊处理的那一行(或者动作)才会被列出来。
-e :直接在命令列模式上进行 sed 的动作编辑;
-f :直接将 sed 的动作写在一个文件内, -f filename 则可以运行 filename 内的
sed 动作;
-r :sed 的动作支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法)
-i :直接修改读取的文件内容,而不是由萤幕输出。
动作说明: [n1[,n2]]function
n1, n2 :不见得会存在,一般代表『选择进行动作的行数』,举例来说,如果我的动作
是需要在 10 到 20 行之间进行的,则『 10,20[动作行为] 』
function 有底下这些咚咚:
a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p :列印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配
正规表示法!例如 1,20s/old/new/g 就是啦!
eg:
nl regular.txt | sed ‘2,5d‘ //删除第二到第五行 ,sed 后面的动作必须要使用‘‘扩住
nl regular | sed ‘2a add hello‘ 第二行后面增加数据
nl regular | sed ‘2,5c change 2 to 5 line content‘ 替换2-5行的内容
nl regular | sed -n ‘2,5p‘ 选定行打印出来
nl regular | sed ‘2a add hello‘ 第二行后面增加数据
nl regular | sed ‘2,5c change 2 to 5 line content‘ 替换2-5行的内容
nl regular | sed -n ‘2,5p‘ 选定行打印出来
sed的查找与替换 sed ‘s/要被替换的字符串/新字符串/g‘
cat .bashrc | sed ‘s/#.*$//g‘ | sed ‘s/^$//g‘ |grep -n ‘exp‘ //删除注释行和空白行
sed -i ‘s/\.$/\!/g‘ regular //直接修改文件
awk 好用的数据处理工具
适合小型数据处理
awk ‘条件类型1{动作1} 条件类型2{动作2} ...‘ filename
通配符
特殊正则
正则
拓展正则
鸟书shell 学习笔记(二) shell中正则表达式相关
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。