美文网首页Linux
Linux高级操作命令

Linux高级操作命令

作者: 溯水心生 | 来源:发表于2018-11-25 16:42 被阅读10次

    [TOC]

    一、Linux高级操作命令

    1.cut

    可以从一个文本文件或者文本流中提取文本列

    [root@localhost ~]# echo $PATH
    ~/anaconda2/bin:/usr/local/node/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/nginx/sbin:/usr/local/activemq/bin:/usr/local/ant/bin:/usr/local/java/bin/bin:/usr/local/memcached/bin:/usr/local/mongodb/bin:/root/bin
    
    

    取出第五个路径

    [root@localhost ~]# echo $PATH |cut -d ':' -f 5
    /usr/sbin
    

    将Path变量取出,取出第三个和第五个

    [root@localhost ~]# echo $PATH |cut -d ':' -f 3,5
    /usr/local/sbin:/usr/sbin
    
    

    将Path变量取出,取出第三个到最后一个

    [root@localhost ~]# echo $PATH |cut -d ':' -f 3-
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/nginx/sbin:/usr/local/activemq/bin:/usr/local/ant/bin:/usr/local/java/bin/bin:/usr/local/memcached/bin:/usr/local/mongodb/bin:/root/bin
    
    

    将Path变量取出,取出一个到第三个变量

    [root@localhost ~]# echo $PATH |cut -d ':' -f 1-3
    ~/anaconda2/bin:/usr/local/node/bin:/usr/local/sbin
    
    

    2.sed命令

    • 删除: d命令
    [root@localhost WorkSpace-Python]# sed '2d' example       -----删除example文件的第二行。
    root@localhost WorkSpace-Python]#  sed  '2,$d' example     -----删除example文件的第二行到末尾所有行。
    root@localhost WorkSpace-Python]#  sed '$d' example        -----删除example文件的最后一行。
    root@localhost WorkSpace-Python]#  sed '/test/'d example    ----删除example文件所有包含test的行。
    
    • 替换: s命令
     sed 's/test/mytest/g' example     
    

    整行范围内把test替换为mytest。如果没有g标记,则只有每行第一个匹配的test被替换成mytest。

    sed -n 's/^test/mytest/p' example     
    

    (-n)选项和p标志一起使用表示只打印那些发生替换的行。也就是说,如果某一行开头的test被替换成mytest,就打印它。

    sed d 's/^192.168.0.1/&localhost/' example    
    

    符号表示追加一个串到找到的串后。所有以192.168.0.1开头的行都会被替换成它自已加 localhost,变成192.168.0.1localhost。

    sed -n 's/loveable/\1rs/p' example
    

    love被标记为1,所有loveable会被替换成lovers,而且替换的行会被打印出来。

     sed 's#10#100#g' example
    

    不论什么字符,紧跟着s命令的都被认为是新的分隔符,所以,“#”在这里是分隔符,代替了默认的“/”分隔符。表示把所有10替换成100。
    选定行的范围:逗号

     sed -n '/test/,/check/p' example
    

    所有在模板test和check所确定的范围内的行都被打印。

    sed -n '5,/^test/p' example
    

    打印从第五行开始到第一个包含以test开始的行之间的所有行。

    sed '/test/,/check/s/$/sed test/' example
    

    对于模板test和west之间的行,每行的末尾用字符串sed test替换。
    多点编辑:e命令

    sed -e '1,5d' -e 's/test/check/' example
    

    (-e)选项允许在同一行里执行多条命令。如例子所示,第一条命令删除1至5行,第二条命令用check替换test。命令的执行顺序对结果有影响。如果两个命令都是替换命令,那么第一个替换命令将影响第二个替换命令的结果

    sed --expression='s/test/check/' --expression='/love/d' example
    

    一个比-e更好的命令是--expression。它能给sed表达式赋值。

    • 从文件读如: r命令
    sed '/test/rfile' test.txt
    

    file里的内容被读进来,显示在与test匹配的行下面,如果匹配多行,则file的内容将显示在所有匹配行的下面。

    • 写入文件: w命令
    sed -n'/test/example' test.txt
    

    在example中所有包含test的行都被写入file里

    • 追加命令: a 命令
    sed'/^test/a\\--->this is a example' test.txt   
    

    this is a example'被追加到以test开头的行后面,sed要求命令a后面有一个反斜杠

    • 插入: i命令
     sed '/test/{ n; s/aa/bb/; }' test.txt
    

    如果test被匹配,则移动到匹配行的下一行,替换这一行的aa,变为bb,并打印该行,然后继续

    • 退出: q
    sed '10q' test.txt
    

    打印完第10行后,退出sed

    3.awk命令

    awk是流式编辑器,针对文档中的行来进行此操作,一行一行的执行,awk兼具sed的所有工鞥。

    • 截取文档中的某个片段
    #head -n2 test.txt|awk -F ':' '{print $1}'
    root
    bin
    

    -F 用来指定分割符,不加-F,则以空格或者tab作为分割符,1为第一个字段,2为第二个字段,$0为整行

    • 匹配字符或者字符串
    # awk '/oo/' test.txt
    
    root:x:0:0:root:/root:/bin/bash
    
    

    查找对应字符串在test.txt文件文件中

    # awk -F ':' '$1 ~/oo/' test.txt
    

    ~的意思是按字符串段去匹配

    • 条件操作符
    [root@localhost ~]# awk -F ':' '$3=="o"' /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    
    

    匹配第三个字段信息为o的信息,支持>,<,<=,>=,!=,&&&,||等符号,双引号表示字符串,不加引号则表示数字。

    [root@localhost ~]# awk -F ':' '$3>=500' /etc/passwd
    systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
    polkitd:x:998:996:User for polkitd:/:/sbin/nologin
    unbound:x:997:994:Unbound DNS resolver:/etc/unbound:/sbin/nologin
    libstoragemgmt:x:996:993:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
    colord:x:995:992:User for colord:/var/lib/colord:/sbin/nologin
    saslauth:x:994:76:Saslauthd user:/run/saslauthd:/sbin/nologin
    geoclue:x:993:991:User for geoclue:/var/lib/geoclue:/sbin/nologin
    setroubleshoot:x:992:989::/var/lib/setroubleshoot:/sbin/nologin
    chrony:x:991:988::/var/lib/chrony:/sbin/nologin
    sssd:x:990:987:User for sssd:/:/sbin/nologin
    nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
    gnome-initial-setup:x:989:984::/run/gnome-initial-setup/:/sbin/nologin
    zhangyongliang:x:1000:1000:ZhangYongLiang:/home/zhangyongliang:/bin/bash
    dockerroot:x:988:983:Docker User:/var/lib/docker:/sbin/nologin
    slapd-dcm4chee:x:1021:1021::/home/slapd-dcm4chee:/bin/bash
    dcm4chee-arc:x:1023:1023::/home/dcm4chee-arc:/bin/bash
    
    

    打印uid序号大于500的用户信息

    • awk的内置变量

    awk常用的变量有OFS,NF和NR,OFS和-F 选项有类似的功能,NF标识用分割符分隔后一共有多少段,NR标识行号
    OFS的用法示例:

    head -5 /etc/passwd |awk -F ':' '{OFS="#"} {print $1,$3,$4}'
    
    • awk的数学运算
    [root@localhost ~]# head -n2 /etc/passwd |awk -F ':' '{$7=$3+$4; print $0}'
    root x 0 0 root /root 0
    bin x 1 1 bin /bin 2
    
    

    相关文章

      网友评论

        本文标题:Linux高级操作命令

        本文链接:https://www.haomeiwen.com/subject/phgpqqtx.html