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继续处理才行
管线命令
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)