管道命令总结

管道命令

概念

管道命令只会处理stdout,忽略stderr

管道命令后面接的第一个数据必定是命令,这个命令必须能够接收stdin

选取命令

作用:取出我们想要的数据

         cut

用途:将一行信息的某一段切出来

缺点:处理多空格相连的数据比较差

                   cut -d ‘分隔字符‘ -f fields

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

-f                依据-d将一段信息切割成数段,用-f取出第几段

取出PATH的第五个路径

                                               echo $PATH | cut -d ‘:‘ -f 5

取出PATH的第三个和第五个路径

                                              echo $PATH | cut -d ‘:‘ -f 3,5

cut -c 字符范围

-c               以字符为单位取出固定字符区间

取出每一行12个字符之后的所有字符

                                               export|cut -c 12-

取出每一行第12~20之间的所有字符

                                               export|cut -c 12-20

         grep

用途:分析一行信息,如果当中有我们需要的信息,就将该行拿出来

                   grep [-acinv] [--color=auto] ‘查找字符串‘ filename

a                将binary文件以text文件的方式查找数据

c                 计算找到‘查找字符串‘的次数

I                 忽略大小写

n                输出行号

v                 反向选择,即查找没有‘查找字符串‘的那一行

--color-auto               将找到的关键字颜色显示

排序命令

         sort

用途:依据不同的数据类型来排序

                   sort [-fbMnrtuk] [file or stdin]

f                 忽略大小写的差异

b                忽略最前面的空格符部分

M               以月份的名字来排序

n                以纯数字排序

r                 反向排序

t                 分隔符,默认使用[Tab]分隔

u                unique,相同的数据只出现一行代表

k                 以那个区间来进行排序

                                     cat /etc/passwd | sort -t ‘:‘ -k 3

         wc

用途:统计多少字、多少行、多少字符

                   wc [-lwm]

l        仅列出多少行

w      仅列出多少字(英文单字)

m      仅列出多少字符

         uniq

用途:相同的数据,仅出现一行代表

特殊:可以计数

                   uniq [-ic]

i                 忽略大小写,等效于sort -fu

c                 进行计数

双向重定向

         tee

用途:让stdout转存一份到文件内,并将同样的数据继续送到屏幕处理

                   tee [-a] file

a                不加a为>到file,加a为>>到file

                                     ls -l /| tee -a ~/homefile |more

字符转换命令

         tr

用途:删除或替换一段信息当中的文字

                   tr [-ds] SET1 ...

无参数时进行替换操作

d                删除信息当中的SET1

s                 重复的SET1只用一个表示

原本

aab,bbc,ccd,dda

AAB,BBC,CCD,DDA

小写变大写

                                               cat a.log | tr ‘[a-d]‘ ‘[A-D]‘

AAB,BBC,CCD,DDA

AAB,BBC,CCD,DDA

小写去重复

                                               cat a.log | tr -s ‘[a-d]‘

ab,bc,cd,da

AAB,BBC,CCD,DDA

小写变大写去重复

                                               cat a.log | tr -s ‘[a-d]‘ ‘[A-D]‘

AB,BC,CD,DA

AB,BC,CD,DA

         col

用途:将[Tab]按键替换为对等的空格键

经常用来将man page转存为纯文本文件以方便查阅

                   col [-xb]

x                 将[Tab]键转换为对等的空格键

b                文字内有/时,仅保留/最后接的那个字符

                                     cat /etc/man.confg|col -x| cat -A| more

                                     man col | col -b > /root/col.man

         join

用途:两个文件当中有相同数据的那一行加在一起

注意:两个文件最好事先经过排序(相同数据那一行)

                   join [-ti12] file1 file2

t                 指定分隔符号,默认空格符

i                  忽略大小写

1                指定第一个文件用那个字段来分析

2                制定第二个文件用哪个字段来分析

将两个文件第一个字段相同者整成一行

                                              join -t ‘:‘ /etc/passwd /etc/shadow

使用GID将两个文件整成一行

                                               join -t ‘:‘ -1 4 /etc/passwd -2 3 /etc/shadow

注:结果GID会在第一列,其余列按顺序排列,相同的前几个字段不再出现

         paste

用途:将两个文件每一行都粘在一起,[TAB]键隔开,不进行匹配,只复制粘贴

                   paste [-d] file1 file2

d                后接分隔字符,默认[TAB]

         expand

将[TAB]键转换为空格键,可以自定义一个[TAB]键对应多少个字符

                   expand [-t] file

t                 后接数字,默认为8个

         unexpand

将空格转换为[Tab]键

                   unexpand [-at] file

a                转换所有空格

t                 后接数字,默认为8个

unexpand [--first-only] file              仅转换开头

切割命令

         spilt

将一个大文件依据文件大小或行数来切割成为小文件

  spilt [-bl] file PREFIX

b                后接欲切割的单位文件大小,可跟单位,b,k,m等

l                  后接欲切割的单位文件行数

PREFIX               代表前导符,表示切割成为的文件名字的前几个字符

                            cd /tmp ; spilt -b 300k /etc/termcap termcap

得到termcapaa,termcapab,termcapac...

切割文件的合并

                   cd /tmp ; cat termcap* >> termcapbak

参数代换

xargs

用途:分别通过分割(-i)与分批(-n)行为产生某个命令的参数

接收stdin,以指定字符进行分隔,将stdin分成多个arguments

主要用于连接两个非管道命令

                   xargs [-0edpni] command

0                将stdin中的特殊字符(如`,\等)还原为一般字符

e                后接字符串,表示分析到指定字符串的时候,停止分析(end of file)

d                指定分割字符,而不是默认的空格符

p                执行每个命令,都会询问用户

n                指定每次command使用几个参数

i                  不使用i只能传递到最后。使用-i后,可以使用{}指定将参数传递到哪,也可以多个

                                     cut -d ‘:‘ -f 1 /etc/passwd | xargs -p -e ‘lp‘ finger

                                     ls logdir/ | xargs -i mv ./logdir/{} ./logdir/{}.bak

关于减号-的用途

用来替代stdin 和stdout

tar -cvf - /home | tar -xvf -

时间: 2024-10-26 07:04:19

管道命令总结的相关文章

Linux基础篇四———管道命令

管道命令 如果我们的数据必须经过"几道手续"之后才能够得到我们想要的格式那么我们必须使用pipe命令来解决这个问题 **管道命令和连续执行命令是不一样的 我们来看一下管道命令的处理信息流程 管道命令的应用 1.cut **用于选取部分数据 -d:规定分隔符 -f:依据-d分隔之后所选取的数据段 -c:规定以字符为单位分割接数字来取到置顶位置数据. **cut的主要用途在于将同一行数据进行分解 2.grep **用于分析一行数据 -a: 将二进制文件以text文件的方式查找数据 -c:计

linux shell 管道命令(pipe)使用及与shell重定向区别

linux shell 管道命令(pipe)使用及与shell重定向区别 看了前面一节:linux shell数据重定向(输入重定向与输出重定向)详细分析 估计还有一些朋友是头晕晕的,好复杂的重定向了.这次我们看下管道命令了.shell管道,可以说用法就简单多了. 管道命令操作符是:"|",它仅能处理经由前面一个指令传出的正确输出信息,也就是 standard output 的信息,对于 stdandard error 信息没有直接处理能力.然后,传递给下一个命令,作为标准的输入 st

管道命令'|'

管道符号,是unix功能强大的一个地方,符号是一条竖线:"|", 用法: command 1 | command 2 他的功能是把第一个命令command 1执行的结果作为command 2的输入传给command 2, 例如: ls -l | more 该命令列出当前目录中的任何文档,并把输出送给more命令作为输入,more命令分页显示文件列表. 管道命令'|'

管道命令的使用

bash命令执行的时候有输出数据,如果这群数据比寻经过几道手续之后才能得到我们所需要的格式,就涉及到管道命令(pipe),管道命令使用"|"这个界定符号,另外管道命令和连续执行命令是不一样的. 管道命令"|"仅能够处理经由前面一个命令传来的正确信息,也就是standard output的信息,对于standard error并没有直接处理的能力.在每个管道后面接的第一个数据必定是命令,而且这个命令必须能够接收standard input的数据才行,这样的命令才可以是

数据流重定向和管道命令(bash学习02)

标准输入输出和错误 标准输入(stdin) 是指令数据的输入,代码为0,使用<或者<<,默认是键盘 标准输出(stdout)是指令执行成功返回的结果,代码为1,使用>或者>>,默认由屏幕显示 标准错误输出(stderr)是指令执行失败返回的错误信息,代码为2,使用2>或者2>>,默认是屏幕 < 指定输入的数据媒介来源1> 将正确的内容 覆盖输出到指定的媒介1>> 将正确的内容 追加到指定的媒介2> 将错误信息覆盖输出到指定

谈谈Linux下的数据流重定向和管道命令

一.标准输入.标准输出.错误输出概述 1.标准输入(stdin)是指令数据的输入,代码为0,使用<或者<<,默认是键盘. 2.标准输出(stdout)是指令执行成功返回的结果,代码为1,使用>或者>>,默认在屏幕显示. 3.标准错误输出(stderr)是指令执行失败返回的错误信息,代码为2,使用2>或者2>>,默认是屏幕. 二.数据流重定向的使用      1."<":指定输入的数据媒介来源(tr 'a-z' 'A-Z' &l

Linux操作利器之管道命令

管道命令 管道命令:顾名思义,主要在管道二字上,意思就是把一些东西通过一个管道,变成你想要的样子,管道相当于一个过滤器,留下你想要看到的东西. Linux下面管道命令使用的是'|'界定符,其格式为'命令 | 命令',即把前一个命令的输出作为第二个命令的输入,第二个命令一般是一个文档选取命令. 选取命令cut,grep cut 按行处理文档 参数: * -d 后面接分隔符 * -f 后面接数字第几段 * -c 以字符为单位取出来第几段 例如: $:echo $PATH /home/work/.ju

Linux就该这么学--命令集合7(管道命令符)

1.管道命令符"|"的作用是将前一个命令的标准输出当作后一个命令的标准输入,格式为:"命令A|命令B". 找出被限制登录用户的命令是:grep "/sbin/nologin" /etc/passwd 统计文本行数的命令是:wc -l 将搜索命领的输出值传递给统计命令,其实只要把管道符建在中间就可以了: grep "/sbin/nologin" /etc/passwd|wc -l 附录: 管道符命令完全可以这样:命令A|命令B|

LinuxShell——管道命令

LinuxShell——管道命令 摘要:本文主要学习了Shell中的管道命令. grep命令 grep命令的作用是在文件中提取和匹配符合条件的字符串行,全称是Global Regular Expressions Print. 基本语法 1 [[email protected] ~]# grep [选项] 搜索内容 文件名 选项说明 1 -A n:n为数字,列出符合条件的行,并列出后续的n行. 2 -B n:n为数字,列出符合条件的行,并列出前面的n行. 3 -c:统计找到的符合条件的字符串的次数