目录

linux 管道命令

管道命令 pipe

选取命令cut,grep

cut

处理信息已行为单位
参数:

  • -d : 后面接分隔字符,与-f 一起使用;
  • -f : 依据 -d 的分隔字符将一段信息切割为数段,用 -f 取出第几段的意思
  • -c : 以字符的单位取出固定长度

ep:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
 ~  echo $PATH
/Users/yichaosong/mongo/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/go/bin:/bin
# 取出PATH变量第5路径
 ~  echo $PATH | cut -d ':' -f 5
/usr/sbin
# 取出PATH变量第3,第5路径
 ~  echo $PATH | cut -d ':' -f 3,5
/usr/bin:/usr/sbin
# 将export输出的信息取得第12字符字符前的所有字符
 ~  export | cut -c -12
Apple_PubSub
COLORFGBG='1
COLORTERM=tr
GOPATH=/Libr
GOROOT=/usr/
HOME=/Users/
ITERM_PROFIL
ITERM_SESSIO
LC_CTYPE=UTF

grep

分析一行数据,将我们所需要的信息,拿出来
参数:

  • -a : 将binary 文件以 text 文件的方式查找数据
  • -c : 计算找到 要查找字符 的次数
  • -i : 忽略大小写的不同
  • -n : 输出行号
  • -v : 反向选择,显示出没有 要查找字符 的那行
  • –color=auto : 可以将找到的关键字加上颜色 ep:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#展示匹配次数
 ~  grep -c -i 'manpath' /etc/man.conf
24
#以自动颜色不区分大小写显示行号
 ~  grep -n -i --color=auto 'manpath' /etc/man.conf
10:# This file is read by man to configure the default manpath (also used
11:# when MANPATH contains an empty substring), to find out where the cat
13:# and to map each PATH element to a manpath element.
18:# MANPATH        manpath_element [corresponding_catdir]
19:# MANPATH_MAP        path_element    manpath_element
41:# Every automatically generated MANPATH includes these fields
43:MANPATH  /usr/share/man
50:# MANPATH    /usr/lib/*/man
51:# MANPATH    /usr/share/*/man
52:# MANPATH    /usr/kerberos/man
#展示符合条件的第一列
 ~  last | grep  -n 'root' | cut -d ' ' -f1
24:root
41:root
#反向展示符合条件的第一列
 ~  last | grep  -v -n 'root' | cut -d ' ' -f1
1:yichaosong
2:yichaosong
3:yichaosong
4:yichaosong
5:yichaosong

排序命令sort,wc,uniq

sort 排序

排序的字符和语系编码有关
参数:

  • -f : 忽略大小写差异
  • -b : 忽略最前面的空格字符串
  • -M : 以月份的名字来排序
  • -n : 使用 纯数字 进行排序
  • -r : 就是 uniq,相同的数据,仅出现一行 去查
  • -t : 分隔符,默认使用tab 来分隔
  • -k : 以那个区间来排序
    ep:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
#排序
 ~ cat /etc/passwd|sort|grep -v '#'
_amavisd:*:83:83:AMaViS Daemon:/var/virusmails:/usr/bin/false
_analyticsd:*:263:263:Analytics Daemon:/var/db/analyticsd:/usr/bin/false
_appleevents:*:55:55:AppleEvents Daemon:/var/empty:/usr/bin/false
#以: 分隔 对第三区间 纯数字排序
 ~ cat /etc/passwd | sort -t ':' -k 3 -n|grep -v '#'
nobody:*:-2:-2:Unprivileged User:/var/empty:/usr/bin/false
root:*:0:0:System Administrator:/var/root:/bin/sh
daemon:*:1:1:System Services:/var/root:/usr/bin/false
#输出账号信息并排序
 ~ last | cut -d ' ' -f1 | sort

reboot
reboot
reboot

uniq

排序后将重复的数据仅列出一个显示
参数:

  • -i : 忽略大小写
  • -c : 进行计数
    ep:
1
2
3
4
5
6
7
8
#获取最近登录次数最多的账号
  ~ last | cut -d ' ' -f1 | sort | uniq -c | sort -k 1 -r
  39 yichaosong
   8 reboot
   6 shutdown
   2 root
   1 wtmp
   1

wc

统计文件行数 字数
参数:

  • -l : 列出行数
  • -w : 列出字数
  • -m : 多少字符
    ep:
1
2
3
#查看man.conf 字 行 字符
  ~ cat /etc/man.conf | wc
     140     720    4574