阿铭Linux 第十八天课(2016-09-07)

回复 收藏
2.4/2.5 sed
1、sed 工具比grep 复杂。与grep 不一样的就是不能颜色显示。
2、实例:
        1、sed -n ’10’p 1.txt  : 打印10行,注意-n 参数。
        2、 sed -n ’30,$’p 1.txt : 从30行到末尾行
        3、 sed -n ‘/root/‘p 1.txt : 包含root 的行
        4、sed -n ‘/r.o/‘p 1.txt : 一个
        5、sed -n ‘/r*o/‘p 1.txt :一个或多个
        6、sed -n ‘/r\?o/‘p 1.txt : 注意脱意字符
        7、sed ‘/^$/‘d 1.txt : 删除空行
        8、sed ‘1,19’d 1.txt :删除1-19行
3、 参数:
        -r :不需要再加脱意转换。
        -i : 删除文本内容参数,一般不建议使用。
        查找替换,与vim 的类似。
4、替换功能:
        sed ‘1,10s/nologin/login/g’ 1.txt
        1-10行 ,g 全局 ,将nologin 替换为login 。
        sed ‘1,10s/\/sbin\/nologin/login/g’ 1.txt
        sed ‘1,10s#/sbin/nologin#login#g’ 1.txt
        上面两个同理一样。
        sed ’s#/sbin/nologin#login#g’ 1.txt 全局替换。
        sed ’s#^.*$#login#g’ 1.txt : 将一整行修改为login
        sed ’s#^.*$#&login#g’ 1.txt :每行的末尾加上login
        sed ’s#[0-9]# #g’ 1.txt : 将每行的数字删除。
        sed ’s#[^0-9a-zA-Z]##g’ 1.txt : 将特殊符号删除。
        sed ’s#(^[a-z]+)(:.*:)(.*$)#\3\2\1#g’  1.txt 将:最前和最后的互换位置。
        sed -n ‘/root/p; /aming/p’ 1.txt : 用; 可以将多个条件打印。
        sed -n -e ‘/root/p’ -e ‘/aming/p’ 1.txt 同理上面。

2.6 /2.7/2.8  awk
1、awk 优势:
        能实现更多的功能,比如分段。
2、参数 :
        -F : 后跟分割符号,’:'
        实例:
        # awk -F ‘:’ ‘{print $3}’ 1.txt : 打印第三段
        # awk -F ‘:’ ‘{print $3,$4}’ 1.txt : 打印第三段,第四段。
        # awk -F ‘:’ ‘OFS=“:"{print $3}’ 1.txt :
        # awk ‘/user/‘ 1.txt
3、awk 不支持 {} 。
4、条件操作符:
        实例:
        # awk -F ‘:’ ‘$1==“root"’ 1.txt
        # awk -F ‘:’ ‘$1==“root” || $7~/nolog/‘ 1.txt
5、awk 内置变量:
        NR : 行:
        实例:
        # awk -F ‘:’ ’NR<10 {print $1}’ 1.txt : 显示前九行。
        # awk -F ‘:’ ’NR=10 {print $1,$7}’ 1.txt
        # awk -F ‘:’ ‘{if (NR==10) print $,$7}’ 1.txt
        # awk -F ‘:’ ‘OFS=“:” {if (NR==10) print $1,$7}’ 1.txt
        NF : 段
        实例:
        # awk -F ‘:’  ‘{print NF}’ 1.txt :打印每行有多少段。
        # awk -F ‘:’ ‘{if (NF==7) print $1}’ 1.txt
        OFS : 分割符
        awk 可以进行数学运算。
        # awk -F ‘:’ ‘$7=$3+$4’  1.txt
        # awk -F ‘:’  ‘OFS=“:” {$7=$3+$4; print $0}’ 1.txt
        # awk -F ‘:’ ‘{(sum=sum+$3)};END {print sum}’ 1.txt
2016-09-10 21:58 举报
已邀请:

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: