管道命令 (pipe)

  • 管道命令pipe,使用的是 | 这个界定符号.
  • 仅能处理由前面一个命令传来的 正确 信息,即standard output,对于standard error 没有直接处理能力.
  • 管道命令必须能够接受来自前一个命令的数据成为 standard input 继续处理.

下面为一些管道命令:

选取命令:cut,grep

排序命令:sort,wc,uniq

双向重定向:tee

字符转换命令:tr,col,join,paste,expand

切割命令:split

参数代换:xargs

选取命令 : cut , grep

选取信息通常是针对 行 来分析的,并不是整篇信息.

  • cut : 将同一行里面的数据进行分解,
    cut -d'分隔字符' -f fields <==用于分隔字符,-f 取出第几段
    echo $PATH | cut -d ':' -f 5 //以:作为分隔符,取第5段.
    cut -c 字符范围 <==用于排列整齐的信息!
    export | cut -c 12- //去除export输出信息第12个字符后的全部字符串.每一行!!!
  • grep : 分析一行数据,若有想要的信息,将 该行 取出.
    grep [-acinv] [--color=auto] '查找字符串' filename
    -i:忽略大小写
    -v:反向选择,即选出没有'查找字符串'内容的行
    last | grep 'root' //将last当中,出现root的行取出
    last | grep -v 'root' //将last当中,没有出现root的行取出
    last | grep 'root' | cut -d ' ' -f 1 //将last当中,出现root的行取出,并且进取第一列.

排序命令 : sort , wc , uniq

  • sort , 排序的字符与语系的编码有关,建议使用 LANG=C 统一语系
    sort [-fbMnrtuk] [file or stdin]
    -r:反向排序
    -t:分隔符,默认[Tab]
    -k:以那个区间(field)来进行排序
    cat /etc/passwd | sort //默认以第一个数据来排序
    cat /etc/passwd | sort -t ':' -k 3 //以:来分隔,且以第三列来排序
  • uniq , 排序sort完成后!,使用uniq,重复的数据仅列出一个显示
    uniq [-ic]
    -i:忽略大小写
    -c:进行计数
    last | cut -d ' ' -f 1 | sort | uniq
    last | cut -d ' ' -f 1 | sort | uniq -c
  • wc , 显示 行 , 字数 , 字符数
    wc [-lwm]
    -l:行,-w:多少字(英文单字),-m:多少字符

双向重定向 : tee

tee 会同时将数据流送至 文件屏幕 ,

输出屏幕的,其实就是 stdout , 可以让下一个命令继续处理!

tee [-a] file // -a:累加的方式 append,将数据加入file中.

last | tee last.list | cut -d ' ' -f1

字符转换命令 : tr , col , join , paste , expand

  • tr , 可以删除一段信息当中的文字,或者替换
    tr [-ds] SET1 ...
    -d:删除SET1这个字符串
    -s:替换掉重复的字符
    last | tr '[a-z]' '[A-Z]' //小写替换成大写
    cat /etc/passwd | tr -d ':' //删除输出信息中的冒号
  • col ,
    col [-xb]
    -x:tab转换成对等的空格键
    -b:文字内有/,仅保留反斜杠/最后接的那个字符
  • join , 将两个文件当中,有相同数据的那一行加在一起.
    join [-ti12] file1 file2
    注:在join之前,应事前对其sort排序处理
  • paste , 将两行贴在一起,且中间以[Tab]键隔开
    paste [-d] file1 file2
    -d:后面可以接分隔符,默认[Tab]
  • expand , 将[Tab]键转成空格键
    expand [-t] file
    -t:后面可以接数字,一般来说一个tab键可以用8个空格键替换

切割命令 : split

  • split , 将一个大文件依据文件大小或者行数来切割成为小文件
    split [-bl] file PREFIX
    -b:后面接切割成的文件大小,可加单位,b,k,m等;
    -l:以行数切割

参数代换 : xargs

  • xargs , 产生某个命令的参数的意思
    xargs [-0epn] command