• shell 三剑客


    shell三剑客
    ===================================================grep====================================================
    grep 的全程为Global search Regular Expression and Print out the line (类似windows 平台的ctrl+F)
    #过滤出/etc/passwd 包含root的行
    cat /etc/passwd|grep root
    # 不区分大小写搜索root行:-i
    grep -i root /tmp/passwd
    #显示搜索结果的行号:-n
    grep -n root /tmp/passwd
    #统计搜索到root的行数,计数:-c
    grep -c root /tmp/passwd
    #精确匹配root行:-w
    cat /tmp/passwd |grep -w root
    #搜索包含root和mail的行: egrep|grep -E
    cat /etc/passwd | grep -e root -e mail
    cat /etc/passwd | egrep "root|mail"
    cat /etc/passwd | grep -E "root|mail"
    #屏蔽标准输出:-q quiet 静默模式
    cat /etc/passwd | grep -q "root" |echo $?配合使用
    #只打印匹配项root:-o only
    cat /etc/passwd | grep -o "root"
    #打印除了包含root的行 -v(取反)
    cat /etc/passwd |grep -v "root"

    ==================================sed======================================
    string+edit=流编辑器
    sed 两个空间:模式空间,保持空间
    用法: sed [选项]... {脚本(如果没有其他脚本)} [输入文件]...
    -i:会修改源文件!
    s:表示替换
    p:print 表示打印
    d:delete 表示删除
    a:append 表示追加
    i:insert 表示插入
    c:整行替换
    w:write 将匹配行写入指定文件内
    r:read 读取指定文件.文件合并
    =:用来显示行号的
    !:表示取反的意思

    #将所有的root替换为huazai007
    sed -i 's/root/huazai007/g' /etc/passwd
    #指定从第二个huazai007 开始替换为root
    sed -i "s/huazai007/root/2g" /tmp/passwd
    #将mail替换为ligenjian(只打印,不修改源文件!)
    sed 's/mail/ligenjian/' /etc/passwd|grep ligenjian
    #将以ftp开头的替换为ftp_wg(不修改源文件)
    &:表示被匹配的字符(ftp)
    sed "s/^ftp/ftp_wg/g" /tmp/passwd | grep ftp_wg
    sed "s/^ftp/&_wg/g" /tmp/passwd | grep ftp_wg
    #打印第10行
    sed -n '10p' /etc/passwd
    #打印 第5行到第10行的内容
    sed -n '5,10p' /etc/passwd
    #从第5行开始,往下打印3行
    sed -n '5,+3p' num
    #打印奇数行
    sed -n '1~2p' num
    #打印偶数行
    sed -n '2~2p' num
    #删除第二行
    sed '2d' num
    #删除 1-3行
    sed '1,3d' num
    #删除空行(^开头 $结尾)
    sed '/^$/d' num
    #删除以huazai007开头的行
    sed '/^huazai007/d' /tmp/passwd |grep huazai
    #删除以bash 结尾的行
    sed '/bash$/d' /etc/passwd|grep bash
    #在以ftp开头的行后面追加一行字符“wg001”
    sed '/^ftp/a"wg001"' /etc/passwd
    #在以nologin 结尾的行后面追加一行字符“bw007”
    sed '/nologin$/a"bw007"' /etc/passwd
    #在第三行给我追加一个字符“wg002”
    sed '3a"wg002"' /etc/passwd
    #在第三行的前面插入一行字符“wg003”
    sed '3i"wg003"' /etc/passwd
    #在以mail开头的行前面插入一行字符“wg004”
    sed '/^mail/i"wg004"' /etc/passwd
    #将包含mail的行整行替换为“wg005”
    sed '/mail/c"wg005"' /etc/passwd
    #将以nologin结尾的整行替换为 wg006
    sed '/nologin$/c"wg005"' /etc/passwd
    #将以nologin结尾的行 写入到指定文件:result.txt里
    sed '/nologin$/w /tmp/result.txt' /etc/passwd
    #将1-10行写入到/tmp/result.txt里
    sed '1,10w /tmp/result.txt' /etc/passwd
    #读取 /tmp/result.txt 并将内容写入到 以mysql开头nologin结尾的行后面
    sed '/^mail.*nologin$/r /tmp/result.txt' /etc/passwd
    #显示最后一行的行号
    sed '$=' /etc/passwd
    #除了#号开头的行都打印出来
    sed -n '/^#/!p' /tmp/result.txt
    ==================================awk=====================================

    shell三剑客
    ===================================================grep====================================================
    grep 的全程为Global search Regular Expression and Print out the line (类似windows 平台的ctrl+F)
    #过滤出/etc/passwd 包含root的行
    cat /etc/passwd|grep root
    # 不区分大小写搜索root行:-i
    grep -i root /tmp/passwd
    #显示搜索结果的行号:-n
    grep -n root /tmp/passwd
    #统计搜索到root的行数,计数:-c
    grep -c root /tmp/passwd
    #精确匹配root行:-w
    cat /tmp/passwd |grep -w root
    #搜索包含root和mail的行: egrep|grep -E
    cat /etc/passwd | grep -e root -e mail
    cat /etc/passwd | egrep "root|mail"
    cat /etc/passwd | grep -E "root|mail"
    #屏蔽标准输出:-q quiet 静默模式
    cat /etc/passwd | grep -q "root" |echo $?配合使用
    #只打印匹配项root:-o only
    cat /etc/passwd | grep -o "root"
    #打印除了包含root的行 -v(取反)
    cat /etc/passwd |grep -v "root"

    ==================================sed======================================
    string+edit=流编辑器
    sed 两个空间:模式空间,保持空间
    模式空间:sed处理文本内容行的一个临时缓冲区,模式空间中的内容会主动打印到标准输出,并自动清空模式空间
    保持空间:sed处理文本内容行的另一个临时缓冲区,不同的是保持空间内容不会主动清空,也不会主动打印到标准输出,而是需要sed命令来进行处理
    小写的都是表示:覆盖
    大写的都是表示:追加
    n|N(next)
    n : 读取下一行覆盖模式空间中的行
    N:读取下一行并追加到模式空间中的行后面
    x:exchange 空间交换
    把模式空间中的内容he保持空间中的内容互换,初始保持空间中为空
    h|H(hold)
    h:把模式空间中的内容覆盖至保持空间中
    H:把模式空间中的内容追加至保持空间中
    g|G(get)
    g:把保持空间中的内容覆盖至模式空间中
    G:把保持空间中的内容追加至模式空间中


    用法: sed [选项]... {脚本(如果没有其他脚本)} [输入文件]...
    -i:会修改源文件!
    -n:取消自动打印模式空间的内容
    s:表示替换
    p:print 表示打印
    d:delete 表示删除
    a:append 表示追加
    i:insert 表示插入
    c:整行替换
    w:write 将匹配行写入指定文件内
    r:read 读取指定文件.文件合并
    =:用来显示行号的
    !:表示取反的意思

    #将所有的root替换为huazai007
    sed -i 's/root/huazai007/g' /etc/passwd
    #指定从第二个huazai007 开始替换为root
    sed -i "s/huazai007/root/2g" /tmp/passwd
    #将mail替换为ligenjian(只打印,不修改源文件!)
    sed 's/mail/ligenjian/' /etc/passwd|grep ligenjian
    #将以ftp开头的替换为ftp_wg(不修改源文件)
    &:表示被匹配的字符(ftp)
    sed "s/^ftp/ftp_wg/g" /tmp/passwd | grep ftp_wg
    sed "s/^ftp/&_wg/g" /tmp/passwd | grep ftp_wg
    #打印第10行
    sed -n '10p' /etc/passwd
    #打印 第5行到第10行的内容
    sed -n '5,10p' /etc/passwd
    #从第5行开始,往下打印3行
    sed -n '5,+3p' num
    #打印奇数行
    sed -n '1~2p' num
    #打印偶数行
    sed -n '2~2p' num
    #删除第二行
    sed '2d' num
    #删除 1-3行
    sed '1,3d' num
    #删除空行(^开头 $结尾)
    sed '/^$/d' num
    #删除以huazai007开头的行
    sed '/^huazai007/d' /tmp/passwd |grep huazai
    #删除以bash 结尾的行
    sed '/bash$/d' /etc/passwd|grep bash
    #在以ftp开头的行后面追加一行字符“wg001”
    sed '/^ftp/a"wg001"' /etc/passwd
    #在以nologin 结尾的行后面追加一行字符“bw007”
    sed '/nologin$/a"bw007"' /etc/passwd
    #在第三行给我追加一个字符“wg002”
    sed '3a"wg002"' /etc/passwd
    #在第三行的前面插入一行字符“wg003”
    sed '3i"wg003"' /etc/passwd
    #在以mail开头的行前面插入一行字符“wg004”
    sed '/^mail/i"wg004"' /etc/passwd
    #将包含mail的行整行替换为“wg005”
    sed '/mail/c"wg005"' /etc/passwd
    #将以nologin结尾的整行替换为 wg006
    sed '/nologin$/c"wg005"' /etc/passwd
    #将以nologin结尾的行 写入到指定文件:result.txt里
    sed '/nologin$/w /tmp/result.txt' /etc/passwd
    #将1-10行写入到/tmp/result.txt里
    sed '1,10w /tmp/result.txt' /etc/passwd
    #读取 /tmp/result.txt 并将内容写入到 以mysql开头nologin结尾的行后面
    sed '/^mail.*nologin$/r /tmp/result.txt' /etc/passwd
    #显示最后一行的行号
    sed '$=' /etc/passwd
    #除了#号开头的行都打印出来
    sed -n '/^#/!p' /tmp/result.txt
    ==================================awk=====================================
    awk 来历
    其名称得自于它的创始人阿尔佛雷德·艾侯、彼得·温伯格和布莱恩·柯林汉姓氏的首个字母
    awk 用法:
    Usage: awk [POSIX or GNU style options] -f progfile [--] file ...
    Usage: awk [POSIX or GNU style options] [--] 'program' file ...
    # 打印 /etc/passwd 的第一个字段
    awk -F ':' '{print $1}' /etc/passwd
    #打印/etc/passwd 的最后一个字段 $NF
    awk -F ':' '{print $NF}' /etc/passwd
    #打印/etc/passwd 的倒数第二个字段:请使用$NF表示
    awk -F ':' '{print $(NF-1)}' /tmp/passwd
    NR:表示当前处理的是第几行
    #打印第二行
    awk 'NR==2 {print}' /etc/passwd
    #打印第三行的倒数第三个字段 /etc/passwd
    awk -F ':' 'NR=3 {print $(NF-2)}' /etc/passwd
    #打印第三行以后的行的第一个字段 /etc/passwd
    awk -F ':' 'NR>3 {print $1}' /etc/passwd
    #打印第三行之前的行的第一个字段
    awk -F ':' 'NR<3 {print $1}' /etc/passwd
    ##awk 内置函数
    toupper():用于将字符变为大写
    awk -F ':' '{print toupper($1)}' /etc/passwd|head -n2
    tolower():用于将字符变为小写
    awk '{print tolower($1)}' /tmp/aa
    #打印包含root的行
    awk '/root/{print}' /etc/passwd
    #打印第一个字段为ftp的行
    awk -F ':' '$1=="ftp" {print}' /etc/passwd
    #打印第三个字段为2的行
    awk -F ':' '$3=="2" {print}' /etc/passwd
    #假如$1==root 打印第一个字段,否则打印第二个字段
    awk -F ':' '{if ($1=="root") print;else print $2}' /etc/passwd
    #假如 最后一个字段为nologin 那么打印第一个字段,否则打印第二字段
    awk -F ':' '{if ($NF=="/sbin/nologin") print $1;else print $2}' /etc/passwd

  • 相关阅读:
    StringBuffer
    判断java标识符
    基本数据类型和String相互转换
    使用String
    Properties属性文件
    Map排序
    java集合之三映射:HashMap、Hashtable、LinkedHashMap、TreeMap
    列表、集合与数组之间相互转换
    自定义列表排序
    ML-支持向量:SVM、SVC、SVR、SMO原理推导及实现
  • 原文地址:https://www.cnblogs.com/milu-777/p/12875681.html
Copyright © 2020-2023  润新知