Linux学习之管道命令

管道命令pipe

1 选取命令

选取信息的分析 一般都是一行一行的来的:

1.1 cut

cut是切的意思,也就是把某一段的信息的某部分切出来,处理信息是以行为单位的。即把一行的想要的信息拿出来:

命令 作用
cut -d ‘分隔符’ -f fields 用于有特定分隔符字符
cut -c 字符区间 用于排列整齐的讯息

选项与参数:

  • -d :后面接分隔字符。与 -f 一起使用;\
  • -f :依据-d后面的分隔符将一段讯息分区成为数段,用-f提取出第几段;
  • -c:以字符的单位取出固定字符区间;

将PATH变量取出 提取第n个路径

$ echo ${PATH}  输出PATH信息,信息以:分隔开来
$ echo ${PATH} | cut -d ':' -f 5  	提取第五个信息
$ echo ${PATH} | cut -d ':' -f 3,5 	提取第三个,第五个信息
$ echo ${PATH} | cut -d ':' -f 1-5 	提取第一到五个信息

以:为分隔符 提取第5个信息以及第一个和第五个
在这里插入图片描述
在这里插入图片描述

获取export输出信息的第12个字符及以后内容

export输出的内容 ,前11个字符是一样的,那么获取后面不一样的字符可以使用cut -c

$ export |cut -c 12-
$ export | cut -c 1-11

在这里插入图片描述
只留下第12个字符及以后的内容:export |cut -c 12-
在这里插入图片描述
同样也可以把前11个字符截取出来: export | cut -c 1-11,注意 字符的位置是从1开始的
在这里插入图片描述

从last信息里面只取出用户名

$ last | cut -d ' ' -f 1 以空格为分隔符取出第一个信息 即用户名

在这里插入图片描述
在这里插入图片描述

1.2 grep

cut是取出一行里面想要的信息,而grep是 对每一行进行分析 假设这一行里面有我们想要的信息,那就把这一行取出来。

$ grep [-achinv] [--color=auto ] '搜索字符' filename

选项与参数:

  • -a:将binary文件以text文件的方式进行搜索
  • -c:计算找到‘搜索字符串’的次数
  • -i:忽略大小写
  • -n:输出行号
  • -v:反向选择,显示没有‘搜索字符串’内容的行
  • –color=auto:可以将找到的关键词部分加上颜色显示;
  • -o:仅仅将搜索字符串显示出来

使用例子:

找出含有‘yinhui’的信息:
在这里插入图片描述
提取出含有‘yinhui’信息的第一个数据,有两种方法,可以用之前的cut,也可以用-o选项
在这里插入图片描述
将不含有‘yinhui’的信息取出来在这里插入图片描述
统计出现‘yinhui’字符的行的数量
在这里插入图片描述

排序命令

sort

sort时进行排序的命令,可以依据不同的数据形态进行排序。

$ sort [-fbMnrtuk] [file or stdin]

选项与参数:

  • -f:忽略大小写的差异
  • -b:忽略最前面的空格符部分
  • -M: 以月份的名字来排序例如JAN。DEC
  • -n:使用纯数字来排序(默认是文字形态)
  • -r:反向排序
  • -u:就是unique,相同数据,仅出现一行为代表;
  • -t:分隔符,预设是【tab】键
  • -k:以那个区间(field)来排序

排序记录在/etc/paswd下的个人账户

$ cat /etc/passwd |sort

默认以第一个数据来排序,并且默认文字性 a-z在这里插入图片描述

以第三栏排序 /etc/paswd 内容

/etc/paswd 内容是以:分隔开的

$  cat /etc/passwd | sort -t ':' -k 3

在这里插入图片描述

利用last 将输出的数据仅提取账号,并加以排序 并且一个账号只出现一次

在这里插入图片描述

uniq

如果排序完了,但是我只想每个相同的数据出现一次怎么办呢?答案就是unique命令

$ uniq  [-ic]
  • -c:计数
  • -i :忽略大小写

使用last将账号列表列出,取出账号那一栏,进行排序只取一位:

$ last | cut -d ' ' -f 1| sort |uniq		//只筛选一个
$ last | cut -d ' ' -f 1| sort -u   //等同于上条命令
$ last | cut -d ' ' -f 1| sort |uniq -c		// 每个用户登入的次数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

wc命令

如果想知道一个文件里面有多少个字符、字节、多少行,可以使用wc这个命令

$ wc [-lwm]

选项与参数:

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

统计一个文件有 多少行 多少字多少字符,

直接只使用wc默认全部统计 :按上面列出来的顺序
在这里插入图片描述

使用last 可以输出登入者的信息,但是last的最后两行并非账号内容,如何一一行指令取得登入系统的总人次?

$ last | grep [a-zA-Z] | grep -v 'wtmp' | grep -v 'reboot' | grep -v 'unknow' | wc -l

空白符 、wtmp、unknow、reboot、unknow等无关账号登入者的信息,利用grep取出非空字符,反向选择没有那几个关键字的那几行,在计算行数。
在这里插入图片描述
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章