Pipeline将一个命令的标准输出作为另一个命令的标准输入,当数据需要经过多个步骤处理后才能得到我们想要的内容时,可以使用pipeline。使用命令之间的|分隔管道命令。
$ ls -al /etc |减
提取指令
剪切数据,取出所需零件。提取过程是逐行进行的。
$ cut
-d:分离器。
-f:d分离后,用-f n取出第n个音程。
-c:取出字符中的间隔。
示例1: last将显示登录信息,并且只需要显示用户名。
$ last
根pts/1 192 . 168 . 201 . 101 2月7日星期六12:35仍然登录
根pts/1 192 . 168 . 201 . 101 Fri 2月6日
根pts/1 192 . 168 . 201 . 254 2月5日星期四223:37-23:53(01:16)
$ last | cut -d ' ' -f 1
示例2:通过导出从消息输出中获取第12个字符之后的所有字符串。
出口美元
declare-x HISTCONtrol=' ignore dups '
declare -x HISTSIZE='1000 '
declare -x HOME='/home/dmtsai '
declare-x HOSTNAME=' study . centos . vbird '
.(其他省略).
$ export | cut -c 12
排序指令
sort来排序。
$ sort[-fbMnrtuk][文件或stdin]
-f:忽略大小写。
-b:忽略前导空格。
-M:按月份名称排序,如JAN、dec。
-n:使用数字。
-r:反向排序。
-u:相当于唯一,重复的内容只出现一次。
-t:分隔符,默认为tab。
-k:指定排序的间隔。
示例:/etc/passwd内容以:分隔,并按第三列排序。
$ cat/etc/passwd | sort-t ' : '-k 3
root : x:0336003360 root :/root :/bin/bash
dmtsai : x :100033601000: dmtsai :/home/dmtsai :/bin/bash
Alex : x :1001:10023360:/home/Alex :/bin/bash
arod : x :1002:100:/home/arod :/bin/bash
uniq只能获取一个重复数据。
$ uniq [-ic]
-i:忽略案例。
伯爵。
示例:获取每个人的登录总数。
$ last | cut -d ' ' -f 1 | sort | uniq -c
一个
6(未知
47 dmtsai
4重新启动
7根
1个wtmp
双向输出重定向
输出重定向将输出重定向到一个文件,tee不仅可以完成这个功能,还可以将输出保留在屏幕上。也就是说,使用tee指令,一个输出将被传输到文件和屏幕。
$ tee [-a]文件
字符转换指令
tr用于删除一行中的字符或替换字符。
$ tr [-ds] SET1.
-d:从行中删除字符串SET1。
例如,将最后输出的所有小写信息转换为大写。
$ last | tr '[a-z]' '[A-Z]'
在col.将制表符转换为空格字符
$ col [-xb]
-x:将tab键转换为等效的空格键。
将expand转换为一定数量的空格,默认为8。
$ expand [-t]文件
-t:转换为空格的制表符数。
将这些行与join.的相同数据合并
$ join [-ti12]文件1文件2
-t:分隔符,默认为空格。
-i:忽略情况的不同。
-1:第一个文件使用的比较字段。
-2:第二个文件中使用的比较字段。
paste直接把这两条线粘在了一起。
$ paste [-d]文件1文件2
-d:分隔符,默认为tab。
分区指令
split把一个文件分成多个文件。
$ split [-bl]文件前缀
-b:按大小分区,并添加单位,如b、k、m等。
-l:按行分区。
-PREFIX:分区文件的头名。