Linux高级命令

Posted wn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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工作流程:读入\\n换行符分隔的一条记录,然后将记录按指定的域分隔符划分域,填充域;$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 "\\t" $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 \\t shell"} {print$1"\\t"$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

    

 

以上是关于Linux高级命令的主要内容,如果未能解决你的问题,请参考以下文章

Linux高级命令04:查找文件命令

三天入门 Linux 系统 - 第三天:Linux 高级命令

linux系统性能监视高级命令(12个)

Linux高级命令02 查看文件内容命令链接命令

Linux高级命令

建议收藏Linux 必备高级命令