zoukankan      html  css  js  c++  java
  • Linux高级命令

    1.grep

      grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来;

      1.1 匹配带有JAVA_HOME的行

        grep JAVA_HOME profile  

        

      1.2 显示不被pattern匹配的行(-v)

        grep -v JAVA_HOME profile

      1.3 忽略字符的大小写(-i)

        grep -i java_home profile

        

      1.4 显示匹配的行号(-n)

        grep -n JAVA_HOME profile

        

      1.5 统计匹配的行数(-c)

        grep -c JAVA_HOME profile  

        

      1.6 仅显示匹配到的字符串

        grep -o JAVA_HOME profile

        

      1.7 静默模式,不输出任何信息

        grep -q JAVA_HOME profile

        

      1.8 显示以关键字开始的后几行

        grep -A 5 JAVA_HOME profile

        

      1.9 显示以关键字开始的前几行

        grep -B 5 JAVA_HOME profile

        

      1.10 实现多个选项间的逻辑or关系

        grep -e JAVA_HOME -e HOME profile

         

      1.11 匹配整个单词

        grep -w JAVA_HOME profile

         

    2.awk

      awk是一个强大的文本分析工具,在其对数据分析并生成报告时,显示尤为强大;简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理;

      2.1 最近登录的5条信息【last -n 5】

        

      2.2 只显示5个最近登录的账号

        last -n 5 | awk '{print $1}'

         

        awk工作流程:读入 换行符分隔的一条记录,然后将记录按指定的域分隔符划分域,填充域;$0表示素所有域,$1表示第一个域,$n表示第n个域;默认域分隔符是‘空白键’或‘tab’键,所以$1表示登录用户,$3表示登录用户ip;

      2.3 显示/etc/passwd的账户

        cat /etc/passwd|awk -F':' '{print $1}'

        

      2.4 显示/etc/passwd的账户和账户对应的shell,而账户与shell之间以tab键分割

        cat /etc/passwd | awk -F':' '{print $1 " " $7}'  

        

      2.5 如果只是显示/etc/passwd的账户和账户对应的shell,而账户与shell之间以逗号分割,而且在所有行添加列名name,shell,在最后一行添加‘blue,/bin/nosh’

        cat /etc/passwd |awk  -F ':'  'BEGIN {print "name,shell"}  {print $1","$7} END {print "blue,/bin/nosh"}'

        

        cat /etc/passwd | awk -F ':' 'BEGIN {print "name shell"} {print$1" "$7} END {print "blue,/bin/bash"}'

         

      2.6 搜索/etc/passwd有root关键字的所有行

        awk -F: '/root/' /etc/passwd 

         

      2.7 搜索/etc/passwd有root关键字的所有行,并显示对应的shell

        awk -F':' '/root/{print $7}' /etc/passwd

         

    3.sed  

      sed是一种流编辑器,它一次处理一行内容;处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕;然就读入下行,执行下一个循环;

      3.1 删除:d命令

        3.1.1 删除/opt/demo文件的第一行

          sed '1d' /opt/demo

        3.1.2 删除/opt/demo文件的第二行

          sed '2,$d' /opt/demo

           

        3.1.3 删除/opt/demo文件的最后一行

          sed '$d' /opt/demo

          

        3.1.4 删除/opt/demo文件所有不包含root的行

          sed '/root/d' /opt/demo

          

      3.2 替换:s命令

        3.2.1 在整行范围内把root替换成newroot;如果没有g标记,则只有每行第一个匹配的root被替换成newroot

          sed 's/root/newroot/g' /opt/demo

          

        3.2.2 开头的root被替换成myroot,就打印它,-n和p标志一起使用表示只打印那些发生替换的行

          sed -n 's/^root/myroot/p' /opt/demo

          

        3.2.3 所有以root开头的都会替换成rootlocalhost,&符号表示追加一个串到找到的串后

          sed 's/^root/&localhost/' /opt/demo

          

        3.2.4 把所有root替换成newroot,#在这里是分隔符,代替了默认的“/”分隔符

          sed 's#root#newroot#g' /opt/demo

           

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

          sed -n '5,/^root/p' /opt/demo

          

      3.3 多点编辑:e命令

        sed -e '1,5d' -e 's/root/newroot/' /opt/demo

        

        -e选项允许在同一行里执行多条命令;如例子所示,第一条命令删除1到5行内容,第二条命令用root替换newroot;命令的执行顺序对结果有影响;如果两个命令都是替换命令,那么第一个替换命令将影响第二个替换命令的结果;

      3.4 从文件读入:r命令

        sed '/root/r file' /opt/demo

        

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

      3.5 写入命令:w命令

        在/opt/demo中所有包含root的行都被写入file里;

        sed -n '/root/w file' /opt/demo

        

      3.6 退出:q命令

        打印完第10行后,退出sed;

        sed '10q' /opt/demo

        

  • 相关阅读:
    【HDOJ】2774 Shuffle
    【POJ】2170 Lattice Animals
    【POJ】1084 Square Destroyer
    【POJ】3523 The Morning after Halloween
    【POJ】3134 Power Calculus
    【Latex】如何在Latex中插入伪代码 —— clrscode3e
    【HDOJ】4801 Pocket Cube 的几种解法和优化
    【HDOJ】4080 Stammering Aliens
    【HDOJ】1800 Flying to the Mars
    SQL语法
  • 原文地址:https://www.cnblogs.com/wnwn/p/12743613.html
Copyright © 2011-2022 走看看