Linux 命令小记

  1. awk 命令
    删除重复的、非连续的行

    `awk '! a[$0]++'`

    awk 使用特殊分隔符分隔列

    echo "192.168.102.134" | awk -F . '{print $4}'
  2. sed 命令
    截取程序日志中某个时间范围内的文本

    sed -n '/^2015-05-14 15:32:30/,/^2015-05-14 16:12:09/p' access_log > log.txt

    去除空白行的 sed

    SECRET=`sed '/^$/d' file.txt | head -1`

    通过 sed 替换字特殊字符

    echo "12,34,56" | sed 's/,/ /g'

    通过 sed 替换二者之间的字符串内容
    文件内容

    <server id="film-web" address="127.0.0.1" port="6881"> </server>
    [root@localhost /]# cat test.txt 
    <server id="film-web" address="127.0.0.1" port="6881"> </server>
    [root@localhost /]# sed -n "s/( *server.*port=").*(".*)/1abc2/p" test.txt
    <server id="film-web" address="127.0.0.1" port="abc"> </server>
    [root@localhost /]# sed -n "s/( *server.*address=").*(" *port)/1abc2/p" test.txt
    <server id="film-web" address="abc" port="6881"> </server>

    注:sed 里,使用圆括号括起来的内容,可以看做是变量。使用 1 和 2 来输出。
    参见:http://coolshell.cn/articles/9104.html 圆括号匹配
    sed "s/abc/123/g" test.txt 将abc替换为123

  3. grep 命令
    查找文本内容,剔除.jar、.log文件

    grep -i -r --exclude=*.jar --exclude=*.log abc /home/

    查看 tomcat 日志特定内容

    cat catalina.out | grep timecost | grep FamilyController | awk '{if($10 > 100) print $0}'

    查看 tomcat 某天日志

    tail -800000 catalina.out | grep 2016-05-20 > 2016-05-20.log

    grep或操作

    grep -E "pattern1|pattern2" file.txt
    egrep "pattern1|pattern2" file.txt

    grep非操作

    grep -v 'pattern1' file.txt
  4. ps 命令
    cpu / 内存占用率排序

    # linux 下 取进程占用 cpu 最高的前10个进程
    ps auxw --sort=%cpu
    top b -n1 | head -17 | tail -11
    ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head -n 10


    # linux 下 取进程占用内存(MEM)最高的前10个进程
    ps auxw --sort=%mem
    ps aux | awk '{print $2, $4, $6, $11}' | sort -k3rn | head -n 10
    ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head -n 10

    查看端口占用

    lsof -i:8080
    ps -aux | grep java
    ps -aux | grep pid
  5. kill 命令
    批量关闭进程

    kill -9 `ps -ef | grep QQ | grep -v 'grep' | awk {'print $2'}`
  6. vim 命令
    vim 显示 / 隐藏行号

    :set nu 或 :set number
    :set nonu 或 :set nonumber

    vim 替换指定区域匹配文本

    : 10,20 s/10.13.92.1/10.13.92.2/g
  7. date 命令
    打印时间

    echo `date '+%Y-%m-%d %H:%M:%S'`

    时间显示

    date
    date '+%Y-%m-%d %H:%M:%S'
  8. tar 命令
    tar 打包文件,exclude 选项排除指定文件或目录

    ## 将当前目录文件打包为pak.tar.gz,排除logs文件夹
    tar zcvf ../pkg.tar.gz *  --exclude=*.txt --exclude=logs
  9. bashrc 和 profile 的区别
    https://wido.me/sunteya/understand-bashrc-and-profile
原文地址:https://www.cnblogs.com/Mrhuangrui/p/5501765.html