• 打印第n行到最后一行的内容
    sed -n ‘1673523, $p’ bs.gi.log > /home/work/qhl/bs.gi.log

  • 打印匹配abc的行到最后一行的内容。
    sed -n ‘/abc/,$p’ file.txt
    注意是单引号

  • 匹配特定字符串
    1
    echo $line | sed 's/pattern//g'

    eg

    1
    echo 'DB_TYPE_ARR1: rts-weibo:0.80, dnews-weibo:0.80' |grep DB_TYPE_ARR | sed 's/DB_TYPE_ARR//' | sed 's/:[0-9].[0-9]\+//g'

    注意,g是全部替换的意思

  • 替换换行
    1
    sed ':a;N;$!ba;s/\n/ /g'

    示例追加:

    1
    2
    $ echo -e "1\n2" | sed ':a;N;$!ba;s/\n/ /g'
    1 2

  • 替换某个字符串
    将某个文件中的jack字符串替换为tom

    1
    sed -i "s/jack/tom/g" test.txt
  • 如果替换字符串中有”/“的替换
    要使用#来替换

    1
    sed -i 's#origin/string#newstring#g'file_name

    eg 如果一个路径是data/path/abc,现在要将此路径换成一个字符串cde

    1
    sed -i 's#data/path/abc#cde#g' file_name

  • shell awk删除每行最后10个字符
    1
    2
    3
    4
    #!/bin/ksh
    . ~/.profile

    awk '{sub(/.{10}$/,"")}1' test.unl

    shell 10进制转16进制

    1
    echo 10 | awk '{printf ("%x\n", $0)}'

    tar 用法

    1. 打包排除某些文件或文件夹
      tar -zcvf test.tar.gz -X exclude.list test/
      其中exclude.list里面包含了那些你不想要的文件或是文件夹
      tar排除某些文件或文件夹
    2. 字符串前面补0

      start= printf "%02d" "$i"

      shell for循环

      for ((i=0; i<60; i++));
      do
      echo $i;
      done

      vim配置

      vim配置显示中文

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      syntax on
      filetype indent plugin on
      set modeline
      set tabstop=4
      set expandtab
      set softtabstop=4
      set shiftwidth=4
      set nonumber
      set cmdheight=1
      set laststatus=2
      set fileencodings=utf-8,gb2312,gb18030,gbk,ucs-bom,cp936,latin1
      set enc=utf8
      set fencs=utf8,gbk,gb2312,gb18030
      map <F4> <Esc>:%!python -m json.tool<CR>
      set number
      set expandtab ts=4 sw=4 sts=4 tw=100

      copy文件

      1
      rsync -avnL twemproxy --exclude=twemproxy/log work@host.com:/home/work/scp_tmp

      -avnL: 显示哪些要被copy,但是实际上并未执行copy,-avL是真的copy

      随机数生成

      使用系统的 $RANDOM 变量

      1
      echo $RANDOM

      $RANDOM 的范围是 [0, 32767]

    3. 想生成2~10范围之间的随机数
      1
      echo $(($RANDOM%9+2))

      获取函数的返回值

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      #!/bin/bash
      function test() {
      RET_VALUE=15
      res=17
      return 1
      }

      function test1() {
      test
      echo ${RET_VALUE}
      echo ${res}
      }

      test1

      如上代码会输出 15,17. 即通过全局变量的方式来获取函数的返回值

      统计文件的大小

      1
      du * -csh

      awk用法

      awk 分割之后打印所有的列

      1
      awk 'BEGIN{RS=""}{for(a=1;a<=NF;a++) print $a}' connext.txt

      查看进程系统运行时间

      1
      ps -eo pid,lstart,etime,cmd | grep nginx

      杀进程吐core

      1
      kill -4 pid

      kill -l 可以列出所有的数字信号代表的含义。

      nc 命令

      nc是netcat的简写,有着网络界的瑞士军刀美誉。因为它短小精悍、功能实用,被设计为一个简单、可靠的网络工具

      nc的作用

  •