linux 管线命令

有时候我们需要的数据,需要经过几个命令加工出来。
比如从日志文件查找monitorService字符串,并且显示最后10个符合条件的行。我们一般会这么写 grep monitorService XXX.log | tail -10。 | 就是连接2个命令的标记,|后面的就是管线命令,管线命令是能够接收数据的命令。tail接收了grep后的结果,并且做了处理,取最后的10行。
下面介绍几种管线命令

1. cut

cut

  • -d :后面接分隔字符。与 -f 一起使用;
  • -f :依据 -d 的分隔字符将一段讯息分区成为数段,用 -f 取出第几段的意思;
  • -c :以字符 (characters) 的单位取出固定字符区间;
    比如:last | cut -d ' ' -f 1,表示按照空格切割,取第一个字段

2. sort

  • -f :忽略大小写的差异,例如 A 与 a 视为编码相同;
  • -n :使用『纯数字』进行排序(默认是以文字型态来排序的);
  • -r :反向排序;
  • -u :就是 uniq ,相同的数据中,仅出现一行代表;
  • -t :分隔符,预设是用 [tab] 键来分隔;
  • -k :以那个区间 (field) 来进行排序的意思
    cat /etc/passwd | sort -t ':' -k 3 -n 表示用:分隔之后,按照第三个字段排序,用数字的形式

3. wc

  • -l :仅列出行;
  • -w :仅列出多少字(英文单字);
  • -m :多少字符;

4. split

split [-bl] file PREFIX

  • -b :后面可接欲分区成的文件大小,可加单位,例如 b, k, m 等;
  • -l :以行数来进行分区。
  • PREFIX :代表前导符的意思,可作为分区文件的前导文字。
    cd /tmp; split -b 300k /etc/services sub-ser
    表示将/etc/services文件按照300k一个,分割成多个以sub-ser打头的文件

5. xargs

xargs 可以读入 stdin 的数据,并且以空格符或断行字符作为分辨,将 stdin 的资料分隔成为 arguments

  • -0 :如果输入的 stdin 含有特殊字符,例如 `, , 空格键等等字符时,这个 -0 参数 可以将他还原成一般字符。这个参数可以用于特殊状态喔!
  • -e :这个是 EOF (end of file) 的意思。后面可以接一个字符串,当 xargs 分析到这个字符串时, 就会停止继续工作!
  • -p :在执行每个指令的 argument 时,都会询问使用者的意思;
  • -n :后面接次数,每次 command 指令执行时,要使用几个参数的意思。

cut -d ':' -f 1 /etc/passwd | xargs -e'sync' -n 1 id
id命令只能接收一个参数,所以是-n 1,-e'sync'表示读取到sync就结束。xargs还可以给不支持管线命令的命令提供stdin,比如:
find /usr/sbin -perm /7000 | xargs ls -l

你可能感兴趣的:(linux 管线命令)