Linux下Bash的管线pipe命令,cut,grep,sort,wc,uniq,tee,tr,col,join,past,expand

管线命令

ls -al|grep xxx     , |后面就是管线命令

管线命令仅处理standard output,对于standard error output则会忽略

管线命令必须要能够接受来自前一个指令的数据成为standard input继续处理才行


cut将一段信息的某一段给切出来,以行为单位

cut  -d  '分割字符'  -f  第几段

cut  -c   字符区间

-d:  后面接分割字符,与-f一起使用

-f:   依据-d的分割字符将一段字符串分割为数段,后面接数字表示取第几段

-c:  以字符的单位取出固定字幅区间


例:echo  $PATH  |  cut  -d  ':'  -f  5

       echo  $PATH  |  cut  -d  ':'  -f  3,5     获得第3、5行的字符串

        echo  $PATH  |  cut  -c  12-20        获得12-20位的字符串

        echo  $PATH  |  cut  -c  12-             获得第12位以后的字符串


grep分析每行的信息,若有需要的信息就提取出来

grep  [-A]  [-B]  [-acinv]  [--color=auto]  '搜索字符串'  filename

-A:  后面可以加数字,为after的意思,除了列出该行外,后续的n行也列出来

-B:  后面可以加数字,为before的意思,除了列出该行外,前面的n行也列出来

-a:  将二进制文件用text文件方式查找数据

-c:  计算找到'搜索字符串'的次数

-i:   忽略大小写不同,视大小写相同

-n:  输出行号

-v:  反向选择,即显示没有'搜索字符串内容的那行

--color=auto:  将找到关键词的部分加上颜色

例:

last  |  grep  'root'               取出有root的那一行

last  |  grep  -v  'root'          没有root的就取出

last  |  grep  'root'  |  cut  -d  ' '  -f1        有root就取出,并且只取第一栏

grep  --color=auto  'MANPATH'  /etc/man.config         取出/etc/man.config内含有MANPATH的那几行


sort排序,并且可依据数据类型进行排序

sort  [-fbMnrtuk]  [file  or  stdin]

-f:  忽略大小写

-b:  忽略开头部分的空格

-M:  用月份排序,英文的

-n:  使用数字排序,默认是文字

-r:  反向排序

-u:  uniq,只取一行

-t:  分隔符,默认tab

-k:  使用区间来排序


例:

cat  /etc/passwd  |  sort                个人账号都记录在/etc/passwd下,对账号进行排序

cat /etc/passwd  |  sort -t  ':'  -k  3  -n   内容用:来分割,从第三栏排序

last  |  cut  -d  ''  -f2  |  sort  将输出的数据仅取账号,加以排序


uniq排序完成只显示一列

uniq  [-ic]

-i:  忽略大小写

-c:  进行计数


例:

last  |  cut  -d  '  '  -f1  |  sort  |  uniq          将账号列出,仅取出账号栏,进行排序后取出一位

last  |  cut  -d  '  '  -f1  |  sort  |  uniq  -c        将账号列出,仅取出账号栏,进行排序后取出一位,并显示登录次数


wc统计文件中有多少字,多少行,多少字符

wc  [-lwm]

-l:  仅列出行

-w:  仅列出多少字

-m:  多少字符

例:

cat  /etc/man.config  |  wc

输出顺序:行、字数、字符数


tee双向重导向,将数据流(standard input)的处理过程的某段信息保存下来

tee  [-a]  file

-a:  以累加append的方式,将数据加入file中

例:

last  |  tee  last.list  |  cut  -d  " "  -f1         将last的输出保存一份到last.list文件中

ls  -l  /home  |  tee  ~/homefile  |  more  将ls的数据保存一份到~/homefile,同时屏幕也输出信息

ls  -l  /  |  tee  -a  ~/homefile  |  more        累加ls的数据到homefile


tee可以让standard output转存一份到文件内并同样将数据输出到屏幕


tr用来删除文档中的文字,或者是进行替换

tr  [-ds]  SET1

-d:  删除字符串中SET1这个字符串

-s:  取代掉重复的字符串


col,将tab取代为空格

col  [-xb]

-x:  将tab转换成对应的空格

-b:  有反斜线/时,只保留反斜线后的那个字符

man  col  >  /root/col.man

vi  /root/col.man

col经常被用于将 man page 转换为纯文本方便阅读


join,有两个文件,有相同数据的那行,将他们加在一起

join  [-ti12]  file1  file2

-t:  默认用空格分隔数据,并且比对第一段的数据,如果相同,就将两个数据连成一行

-i:  忽略大小写

-1:  第一个文件要用那个字段来分析

-2:  第二个文件要用那个字段来分析


paste直接将两行黏在一起,中间用tab键隔开

paste  [-d]  file1  file2

-d:  后面可以接分割字符,默认tab

-  :如果file部分写成-,表示来自standard input的信息


expand,将tab转成空格键

expand  [-t]  file

-t:  后面可以接数字,定义一个tab代表多少空格,默认8个


split将文件分隔

split  [-bl]  file  PREFIX

-b:  后面可以接想要分隔的文件大小,可以加单位b,k,m

-l:  以行数来分隔

PREFIX:  分隔文件的前缀文字


xargs产生某个命令的参数

xargs  [-0epn]  command

-0:  如果输入的stdin含有特殊字符,这个参数可以将它还原成一般字符

-e:  这个参数后接字符串,遇到这个字符串后停止

-p:  执行命令的参数时,会询问使用者的意思

-n:  后面接次数,每次命令执行时要使用的参数个数

























  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值