Linux Shell DAY4

正则介绍_grep

sed


正则介绍_grep

正则介绍_grep
  1. 什么是正则
  • 正则就是一串有规律的字符串
  • 掌握好正则对于编写shell脚本有很大帮助
  • 各种编程语言都有正则,原理是一样的
  • 本章将要学习grep/egrep、sed、awk
 
  1. grep
                    grep [-cinvrABC] 'word' filename
                    grep 'nologin' passwd    
                    68c81e019c0bc4f656172c4e6f3aa87ba97.jpg
                    grep 自带color 选项
                    bf1e85ccb2443c937165a6cabb6cad73419.jpg
                    -c 行数
                    grep  -c 'nologin' passwd
                    af62957b7de69595cbd96e2d944f3134bcd.jpg
                    -i 不区分大小写
                    grep -ni 'nologin' passwd
                    b07caed22e4fe6b65aa4419c69654fa71f4.jpg
                    -n 显示行号
                    grep -n 'nologin' passwd
                    e17dc7f950ff3b40c28eefed36872116d81.jpg
                     -v 取反
                    grep -vni 'nologin' passwd
                    a2c7037024ad4d98bfba5fddc77960ee127.jpg
                    -r  遍历所有子目录
                    grep -r 'root' /etc
                   736e1222902a6755178807e5b4eac06a102.jpg
                    -A 后面更数字,过滤出符合要求的行以及下面n行
                    grep -A2 'root' passwd
                    1129a0c4926aaf618a9ea1664d0fbad83e2.jpg
                    -B 同上,过滤出符合要求的行以及上面n行
                    grep -B2 'root' passwd
                    eef661cd2c23fc6e402aec2f6aaf6c68f1b.jpg
                    -C 同上,同时过滤出符合要求的行以及上下各n行
                    grep -C2 'root' passwd
                    661f21350f2f1af92f83bc0b88849eec8e0.jpg
 
                    grep '[0-9]' passwd
                    6c84706aae1e5f38dff5b20a040e07e160f.jpg
                    方括号中任意字符
 
                    grep -v '[0-9]' /etc/inittab
                    2018e80593f8fa44985ef0f751042ff1fd1.jpg
                    
                    grep -v '^#' inittab
                    45ea53d5b088adf100811721fb039215069.jpg
                    ^# 以#开头
 
                    [^0-9] 非数字
                    grep ‘[^0-9]’ inittab
                    38e803f8a689345cd5359452474817c1c23.jpg
                    
                    grep  '^[^0-9]’ inittab  非数字开头
                    742549158cc87aab5b2774a42aea1df275f.jpg
                    
                    
                    [^a-zA-Z] 非字母
                    [^0-9a-zA-Z] 非字母数字
 
                    grep 'r.o' passwd 
                    c70fe77d9794aba1044659c2c85083cb1e2.jpg
                    .表示任意一个字符
 
                     grep 'o*o' passwd
                    bffd0b63466b09271c435012ac163f5beff.jpg
                    *表示*左边字符重复0到n次
                    
                    grep ‘.*’ passwd
                    e255cbbf2dcb11a300f45ebe7170e5e0e7e.jpg
                    .* 表示所有字符
 
                    grep 'o\{2\}' passwd
                    
                    o\{2\} 表示 o出现两次
                    c77f02e2dcc97666b4ed1c3e1b4286ca20a.jpg
                    \脱意符号
 
                    egrep 'o{2}' passwd
                    b12aad22bd19b928ea6c5014ef3932b5620.jpg
 
                    grep -E 'o{2}' passwd
                    1782b19dd68ae1246afdd2ace0ba9209e15.jpg
 
                    grep -E '(oo){2}' passwd
                    449ecedd4a98deb8a88323f32d4737bb2f7.jpg
 
                    
                    grep 'o\+o' passwd     egrep 'o+o' passwd
                    2f5f08dee794381879be45b4a2083cb3e8e.jpg
                    +表示+前面的字符重复1次到n次
 
 
                    egrep 'o?t' passwd
                    dc411615eae55a4a780855ad923d0d7835f.jpg
                    ?表示?之前的字符重复0次或1次
 
 
                    egrep 'root|nologin' passwd
                    a2397a8f6a83fa82d9c03c0a8d59117436f.jpg
                    | 表示或者

sed

查找替换功能 
 
           sed -n '/root/'p test.txt  查找 加 -n  和 p
           0bc3fd10022c5e810cec8649144908e3c72.jpg
            
            sed -nr '/o+t/'p test.txt   sed n '/o\+t/'p test.txt   加r后不用脱意符
           2beba51a7c83cbc3458d35e2dc84853c7b7.jpg
            
            sed -nr '/root|bus/'p test.txt
            sed -nr '/o{2}/'p test.txt
            
            sed -n '2'p test.txt
           1485d3e115191684c01d865a2de43973d73.jpg
            打印指定的行
            
            sed -n  '2,5'p test.txt
            d7b0a433f0c6293f2583d850d9fe81a2457.jpg
            打印2到5行
            
            sed -n '15,$'p test.txt  $表示末行
            d2f068b9b2fc4745a718ffee1525d40c6f6.jpg
            打印15到最后一行
            
            sed -e '1'p -e '/bus/'p -n test.txt   -e 一表达式内做多个动作
            236757b4696fbf99c4a0890a195469a2cdd.jpg
            打印第一行并且打印匹配bus行
            
            sed -e '1'p -e '/root/'p -n test.txt
            6cd315bd499b7cc0cdc21cc612fb23ddaa3.jpg
 
            sed -n '/bus/'Ip test.txt
            70f1e7c4e368e072c2f5628bb0b1b106a28.jpg
            加I 不区分大小写
 
            sed  '1,10'd test.txt
            16c441dbea7add33463370d8bc2300671cc.jpg
            不列出前10行
            
            sed -i '1,10'd test.txt
            086c97dc32155a59be07fc9cae7a9967687.jpg
            -i 删除前10行
            
            sed -i '/user1/'d test.txt
            90b430e56432f4040ec9eca4cc5a4af9941.jpg
            删除指定行
 
            sed '1,10s/root/toor/g' test.txt
            5eaf0d0c179581fe40ca607421011f49ba7.jpg
            替换1到10行中root为toor
 
            head test.txt |sed -r 's/([^:]+):(.*):([^:]+)/\3:\2:\1/'
            cdce9bfd1afbd02dad5e8b2ec2665f23de0.jpg
            前十行的第一个和最后一个互换
 
            head test.txt | sed -r 's/(.*)/aaa:&/'     &符号表示前面的()
            6631b0cf0ced033b26bd6bf5718f5cab44a.jpg
            前十行每行前加aaa:
 
            head test.txt |sed 's/[a-zA-Z]//g'
            bee8c5a8188ae20f96e8dcef9f0f745b316.jpg
            删除所有字母

转载于:https://my.oschina.net/u/3959701/blog/3093568

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值