ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

shell中的文本处理工具

2021-03-05 19:02:01  阅读:208  来源: 互联网

标签:shell grep ## westos 文本处理 passwd sed print 工具


文本处理工具

1.grep

[Globally search a Regular Expression and Print]

  • grep
    grep -E =egrep ##扩展的grep
    grep格式:
    grep key file ##搜索key在file中
    在这里插入图片描述
    默认贪婪模式
    -i ##忽略大小写
    grep -i root passwd
    -v ##反向过滤
    grep root passwd -v ##反向筛选
    在这里插入图片描述
    -E ##扩展表达式
    grep -E “root|luqq” passwd ##可过滤多个参数
    grep -E “root>” passwd ##后禁止
    grep -E “<root” paswd ##禁止贪婪模式,前禁止
    在这里插入图片描述
    在这里插入图片描述
    root$ ##root结尾
    grep root$ passwd
    ^root ##root开头
    grep ^root passwd
    在这里插入图片描述
    -5 ##前五行和后五行
    grep -5 chroot passwd
    在这里插入图片描述
    -B5 ##前五行
    grep -B5 chroot passwd
    在这里插入图片描述
    -A5 ##后五行
    grep -A5 chroot passwd
    在这里插入图片描述
    -n ##显示匹配所在行号
    grep -n chroot passwd
    在这里插入图片描述
  • 实验环境:cp /etc/passwd passwd
    vim passwd
    grep root passwd
    w.s ##中间有一个字符
    “we*s” ##e出现次数为0-任意次
    we?s ##e出现0-1次
    {0-3} ##出现0~3次
    w(ef)*s ##ef出现0~任意次
    we+s ##出现次数大于1
    ^westos ##以westos开头
    westos$ ##以westos结尾
    {,n} ##出现0~n次
    {m,} ##最少m次
  • grep ^we westos
    grep es$ westos
    在这里插入图片描述
    grep w…s westos
    grep wes westos
    grep -E “we{1,}” westos
    在这里插入图片描述
    grep -E "we
    " westos
    grep -E “wes" westos
    grep -E “we?s” westos
    grep -E “we+s” westos
    grep -E “we{,4}s” westos
    在这里插入图片描述
    grep -E “we{4,}s” westos
    在这里插入图片描述
    grep -E "w(ef)
    ” westos
    在这里插入图片描述

grep -E “<bash$|<sh$” /etc/passwd | cut -d : -f 1 ##筛选可以su - 切换的用户

sed

  • sed 5p westos ##输出
    -n ##不输出模式空间内容
    sed -n 5p passwd
    在这里插入图片描述
    -5,7p ##5到7行
    sed -n 5,7p passwd ##输出5到7行
    在这里插入图片描述
    -e “5p;7p” ##5和7行
    sed -n ‘5p;7p’ passwd ##输出五和七行
    在这里插入图片描述
    -e ‘5,$p’ ##5~任意行
    sed -ne ‘1,$p’ passwd ##输出1到任意行
    在这里插入图片描述
    -e “/bash/P”
    sed -ne ‘/bash/p’ passwd ##输出含有bash的行
    在这里插入图片描述
    sed -e ‘5,$d’ westos ##删除第五行之后内容

  • d 删除
    sed ‘/^#/d’ fstab ##删除以#开头的行
    在这里插入图片描述
    sed ‘/^UUID/d’ fstab ##删除以UUID开头的行
    在这里插入图片描述
    sed -e ‘5,$d’ ##删除第五行之后的行
    在这里插入图片描述

  • a 添加
    sed -e ‘$a hello world’ fstab ##在fstab末添加helloworld
    在这里插入图片描述
    sed -e ‘$a hello\nworld’ fstab ##在fstab末添加helloworld并换行
    在这里插入图片描述
    sed -e ‘/^#/a hello\nworld’ fstab ##在以#开头的行hello westos’ 插入
    在这里插入图片描述

  • c 更改 处理整行
    sed -e ‘/^#/c hello world’ fstab ##更改#开头为helloworld
    在这里插入图片描述
    sed -e ‘5c hello world’ westos ##修改第五行为helloworld
    在这里插入图片描述

  • w 把符合的内容写入指定文件中
    sed ‘/^UUID/w westosf’ westos ##把以UUID开头的行输出到westosf中
    在这里插入图片描述
    在这里插入图片描述

  • i ##更改
    sed ‘5ihello world’ westos ##修改第五行
    在这里插入图片描述
    sed ‘1chello world’ westos -i westos ##-i后台加载,不显示
    在这里插入图片描述

  • r 整合文件
    sed ‘2r westos’ westos ##将westos整合至westos第二行
    在这里插入图片描述

  • sed 字符替换
    sed 's/t/f/g’ passwd ##替换所有的行和列的t为f
    sed ‘s/sbin/westos/g’ passwd ##将所有的sbin替换为westos
    在这里插入图片描述
    sed ‘5,7s/sbin/westos/g’ passwd ##替换第五行到第七行的sbin为westos
    在这里插入图片描述
    sed -e ‘s@/@####@’ -i passwd ##-i 把sed处理的内容保存到westos文件中
    在这里插入图片描述
    sed ‘7,$s/sbin/westos/g’ passwd ##将第七行之后sbin转换为westos
    在这里插入图片描述
    sed -e ‘s/sbin/westos/g;s/nologin/lee/g’ passwd ##两个指令要用;连接
    在这里插入图片描述
    sed -e ‘s///####/’ passwd ##将所有的/转换为###
    在这里插入图片描述
    sed -e ‘s@/@####@’ passwd ##用@包裹不用写转义字符
    在这里插入图片描述
    sed ‘/lp/,/halt/s/sbin/westos/g’ passwd ##将lp,halt之间行的所有列的sbin转换为westos
    在这里插入图片描述

3.awk

  • begin ##awk处理前执行的事情
    end ##awk处理后执行的事情
    NR ##全部列数
    NF ##全部行数
    FILENAME ##文件名称

  • awk -F : ‘{print $1}’ passwd ##输出passwd的第一列
    在这里插入图片描述
    awk -F : ‘{print $0}’ passwd ##输出passwd文件的全部
    在这里插入图片描述
    awk -F : ‘BEGIN{print “WESTOS”}{print $1}’ passwd ##输出passwd的第一列,并在执行前输出westos
    在这里插入图片描述
    awk -F : ‘BEGIN{print “WESTOS”}{print $1}END{print “END”}’ passwd ##输出passwd的第一行,并在执行前输出westos,并在执行后输出end
    在这里插入图片描述
    awk -F : ‘BEGIN{print “WESTOS”}{print NR}END{print “END”}’ passwd ##输出passwd的行数
    在这里插入图片描述
    awk -F : ‘BEGIN{print “WESTOS”}{print NF}END{print “END”}’ passwd ##输出passwd的列数
    在这里插入图片描述
    awk -F : ‘BEGIN{print “WESTOS”}{print FILENAME}END{print “END”}’ passwd ##输出passwd的文件名
    在这里插入图片描述
    awk -F : ‘BEGIN{print “WESTOS”}/bash$/{print $1,$7}END{print “END”}’ passwd ##输出1至7行中以bash结尾的行
    在这里插入图片描述
    awk // F : ‘BEGIN{print “WESTOS”}/bash$/||/root/{print $1,$7}END{print “END”}’ passwd ##条件在执行动作之前写,用//隔出,找出第一行到第七行以bash结尾的
    在这里插入图片描述

    awk -F : ‘BEGIN{print “WESTOS”}/bash$|root/{print $1,$7}END{print “END”}’ passwd ##两个元素,或者用|相连,表示同一条件的或
    在这里插入图片描述
    在这里插入图片描述
    awk -F : ‘$7~//bin/bash/{print $0}’ passwd ##看作第七列是/bin/bash
    在这里插入图片描述
    awk -F : ‘$7!~//bin/bash/{print $0}’ passwd ##第七列不是/bin/bash /其中/需转义
    在这里插入图片描述

标签:shell,grep,##,westos,文本处理,passwd,sed,print,工具
来源: https://blog.csdn.net/weixin_44632711/article/details/114331932

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有