正则表达式 通配符 三剑客(sed awk grep)

普通命令不支持正则表达式,支持使用通配符。
正则表达式适用于三剑客(sed,awk,grep)。

注意:有些字符需要转义 * { }
通配符:
*:匹配任意多个字符(0或者多个)
?:匹配任意一个字符
[!…]或者[^…]:不匹配中括号内出现的任意一个字符
特殊字符集:1. [[:digit:]] 数字2. [[:lower:]] 小写字母3. [[:upper:]] 大写字母4. [[:alpha:]] 字符(大小写字母)5. [[:alnum:]] 数字加字母6.[[:space:]]空格
[^[:digit:]]



bash的快捷键:
1.ctrl+l:清屏 2. ctrl+c:取消命令的执行 3. ctrl+u:删除命令行首至光标所在处的所有内容 4. ctrl+k:删除光标所在处至行尾的所有内容


基本正则表达式元字符(sed,grep,awk等工具):
字符匹配:1. .:匹配任意单个字符 2. []:匹配指定范围内任意单个字符 re(a|b|c)d 等价于 re[abc]d 3. [^]:匹配指定范围外的任意单个字符 4. [[:digit:]] [[:lower:]] [[:upper:]] [[:alpha:]] [[:alnum:]] [[:space:]]

匹配次数:1. *:匹配前面的字符任意次(0次及以上) 2. .*:任意长度任意字符 3. \?:匹配前面字符串0次或者1次,即可有可无(扩展) 4.\ +:匹配前面的字符至少1次(扩展) 5. \{m\}:匹配前面字符m次(扩展) 6.\ {m,n\}:匹配前面字符至少m,至多n次(扩展) 7. \{m,\}
位置锚定: 1. ^:行首锚定 2. $行尾锚定 3. ^PATTERN$:用于匹配整行 4. ^$:空行 5. \<:词首锚定,用于单词模式的左侧 6. \>:词尾锚定,用于单词模式的右侧 7. \<`PATTERN\>:匹配整个单词
分组:\(xy\):将xy作为一组(扩展) (后向引用:引用前面的分组括号中的模式所匹配的字符,使用\1,\2,\3
\1:从左侧起,第一个左括号以及与之匹配右括号之间的模式所匹配的字符
\(ab\+\(xy\)*\)* \1:ab\+\(xy\)* \2:xy)



Grep:
grep [-acinv] [–color=auto] ’ 搜寻字符串’ filename
选项与参数:
-a :将 binary 文件以 text 文件的方式搜寻数据
-c :计算找到 ‘搜寻字符串’ 的次数
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 ‘搜寻字符串’ 内容的那一行!
–color=auto :可以将找到的关键词部分加上颜色的显示喔!
-A num:after,后num行
-B num:before,前num行
-C num:前后各num行


Sed:
sed 是一种在线编辑器,它一次处理一行内容。行编辑器(逐行进行读取到内存中进行匹配处理,然后显示);不编辑源文件,仅对模式空间中的数据做处理
sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。
Sed处理文件后,无重定向等,文件内容并没有改变,除非你使用重定向存储输出。
定址:可以通过定址来定位你所希望编辑的行,该地址用数字构成,用逗号分隔的两个行数表示以这两行为起止的行的范围(包括行数表示的那两行)。如1,3表示1,2,3行,美元符号($)表示最后一行。范围可以通过数据,正则表达式或者二者结合的方式确定 。

定界:sed ‘s:test:TEXT:g’ sed ‘s|test|TEXT|g’ sed ‘s@test@TEXT@g’

语法: sed ‘1,100命令’路径(文件)

使用语法:sed [options] ‘addressCommand’ file …

address: 1、StartLine,EndLine–>1,100 2、/RegExp/–>/^root/ 3、/Pattern1/,/Pattern2/:第一次被Pattern1开始至第一次被Pattern2匹配到的行结束 4、LineNumber:指定的行 5、StartLine,+N–>从StartLine开始,向后N行
Command:1。d:删除符合条件的行 2. p:显示符合条件的行 3. a \”String”:在指定的行后追加新行,内容为String 4. i:\String:在指定的行前面追加新行,内容为String 5. r FIle:将指定的文件的内容添加至符合条件的行处 6. w FIle:将指定范围内的内容另存至指定的文件中 7. s/pattern/string/修饰符:查找并替换 (1. g:全局替换 2. i:忽略字符大小写 3. &:引用匹配到的串) 7 c 取代

[options] 1. -n:不在默认显示模式空间中的内容 2. -i:直接修改原文件 3. -e SCRIPT -e SCRIPT:可以同时执行多个脚本 4. -f /PATH/TO/SED_SCRIPT: 5. -r:表示使用扩展正则表达式



Awk:
这里写图片描述
三部分任意一部份都可以不出现在脚本中,先执行begin,在执行pattern,后执行end, begin和end语句块仅仅执行一遍,pattern每行执行一次

Awk内置变量:
nnn1n2 n 当 前 记 录 的 第 n 个 字 段 , 比 如 n 为 1 表 示 第 一 个 字 段 , n 为 2 表 示 第 二 个 字 段 。 0 这个变量包含执行过程中当前行的文本内容。
FNR 同NR,但相对于当前文件。
FS 字段分隔符(默认是任何空格)
NF 表示字段数,在执行过程中对应于当前的字段数
NR 表示记录数,在执行过程中对应于当前的行号
OFS 输出字段分隔符(默认值是一个空格)
RS 记录分隔符(默认是一个换行符)
ORS 输出记录分隔符(默认值是一个换行符)

选项:-F:指明输入时用到的字段分隔符 -v: var=value:自定义变量
实例:tail -n 5 /etc/profile | awk ‘{print $2,$5}’

Print:print item1,item2, …
要点:
1.用逗号进行分开;
2.在awk中如果想着进行变量替换,一般不要放到双引号中
3.item可以省略,省略的意思是print $0,显示整行

PATTERN:
empty:空模式,匹配每一行 :
/regex/:显示被匹配的行 : awk ‘/^UUID/{print $1}’ /etc/fstab
awk ‘!/^UUID/{print $1}’ /etc/fstab
关系表达式:awk -F: ‘$3>=1000{print $1,$3}’ /etc/passwd
地址定界 :/parten/,/parten/
awk -F: ‘/^root/,/^user1/{print $1}’ /etc/passwd

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值