shell中的文本处理工具

文本处理工具

1.grep

[Globally search a Regular Expression and Print]

  • grep
    grep -E =egrep ##扩展的grep
    grep格式:
    grep key file ##搜索key在file中
    shell中的文本处理工具
    默认贪婪模式
    -i ##忽略大小写
    grep -i root passwd
    -v ##反向过滤
    grep root passwd -v ##反向筛选
    shell中的文本处理工具
    -E ##扩展表达式
    grep -E “root|luqq” passwd ##可过滤多个参数
    grep -E “root>” passwd ##后禁止
    grep -E “<root” paswd ##禁止贪婪模式,前禁止
    shell中的文本处理工具
    shell中的文本处理工具
    root$ ##root结尾
    grep root$ passwd
    ^root ##root开头
    grep ^root passwd
    shell中的文本处理工具
    -5 ##前五行和后五行
    grep -5 chroot passwd
    shell中的文本处理工具
    -B5 ##前五行
    grep -B5 chroot passwd
    shell中的文本处理工具
    -A5 ##后五行
    grep -A5 chroot passwd
    shell中的文本处理工具
    -n ##显示匹配所在行号
    grep -n chroot passwd
    shell中的文本处理工具
  • 实验环境: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
    shell中的文本处理工具
    grep w…s westos
    grep wes westos
    grep -E “we{1,}” westos
    shell中的文本处理工具
    grep -E "we
    " westos
    grep -E “wes" westos
    grep -E “we?s” westos
    grep -E “we+s” westos
    grep -E “we{,4}s” westos
    shell中的文本处理工具
    grep -E “we{4,}s” westos
    shell中的文本处理工具
    grep -E "w(ef)
    ” westos
    shell中的文本处理工具

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

sed

  • sed 5p westos ##输出
    -n ##不输出模式空间内容
    sed -n 5p passwd
    shell中的文本处理工具
    -5,7p ##5到7行
    sed -n 5,7p passwd ##输出5到7行
    shell中的文本处理工具
    -e “5p;7p” ##5和7行
    sed -n ‘5p;7p’ passwd ##输出五和七行
    shell中的文本处理工具
    -e ‘5,$p’ ##5~任意行
    sed -ne ‘1,$p’ passwd ##输出1到任意行
    shell中的文本处理工具
    -e “/bash/P”
    sed -ne ‘/bash/p’ passwd ##输出含有bash的行
    shell中的文本处理工具
    sed -e ‘5,$d’ westos ##删除第五行之后内容

  • d 删除
    sed ‘/^#/d’ fstab ##删除以#开头的行
    shell中的文本处理工具
    sed ‘/^UUID/d’ fstab ##删除以UUID开头的行
    shell中的文本处理工具
    sed -e ‘5,$d’ ##删除第五行之后的行
    shell中的文本处理工具

  • a 添加
    sed -e ‘$a hello world’ fstab ##在fstab末添加helloworld
    shell中的文本处理工具
    sed -e ‘$a hello\nworld’ fstab ##在fstab末添加helloworld并换行
    shell中的文本处理工具
    sed -e ‘/^#/a hello\nworld’ fstab ##在以#开头的行hello westos’ 插入
    shell中的文本处理工具

  • c 更改 处理整行
    sed -e ‘/^#/c hello world’ fstab ##更改#开头为helloworld
    shell中的文本处理工具
    sed -e ‘5c hello world’ westos ##修改第五行为helloworld
    shell中的文本处理工具

  • w 把符合的内容写入指定文件中
    sed ‘/^UUID/w westosf’ westos ##把以UUID开头的行输出到westosf中
    shell中的文本处理工具
    shell中的文本处理工具

  • i ##更改
    sed ‘5ihello world’ westos ##修改第五行
    shell中的文本处理工具
    sed ‘1chello world’ westos -i westos ##-i后台加载,不显示
    shell中的文本处理工具

  • r 整合文件
    sed ‘2r westos’ westos ##将westos整合至westos第二行
    shell中的文本处理工具

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

3.awk

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

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

    awk -F : ‘BEGIN{print “WESTOS”}/bash$|root/{print $1,$7}END{print “END”}’ passwd ##两个元素,或者用|相连,表示同一条件的或
    shell中的文本处理工具
    shell中的文本处理工具
    awk -F : ‘$7~//bin/bash/{print $0}’ passwd ##看作第七列是/bin/bash
    shell中的文本处理工具
    awk -F : ‘$7!~//bin/bash/{print $0}’ passwd ##第七列不是/bin/bash /其中/需转义
    shell中的文本处理工具

上一篇:企业运维容器之 docker仓库


下一篇:redis为什么要持久化?怎么持久化,持久化的方式有哪些?