`
tiankefeng0520
  • 浏览: 143079 次
  • 性别: Icon_minigender_1
  • 来自: 长春
社区版块
存档分类
最新评论

Linux学习记录--管道命令

阅读更多

管道命令

 

选取命令:cut,grep

排序命令:sort,wc,uniq

双重数据量:tee

字符转换命令:tr,expand,col

切割命令:split

参数代换:xargs

 

管道命令与连续命令不同,连续命令中的各个命令不存在相关性只是顺序执行。

对于管道命令来说cmd1|cmd2.

cmd2需要cmd1产生的输出流作为cmd2的输入流,命令之间存在很强的依赖关系,并且管道命令只能处理正确的输出数据流

 

选取命令

 

cut

 

从某一行将一段信息切出来

语法:cut –d ‘分割字符’  -f field

             cut –c 字符范围

选项与参数:

-d:后接分割字符与-f连用

-f:获取经-d分割后的第几个字段

-c:以字符的单位取出固定字符区间,适用于排列正确的信息

选取范围a-b 如果是从第a个字符到最后可写成a-

 

说明:cut可以进行单行与多行分割,对于多行每一行都看做单独的一行分割与获取field

 

举例1:单行分割

[root@localhost ~]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin
[root@localhost ~]# echo $PATH |cut -d ':' -f 1
/usr/kerberos/sbin
[root@localhost ~]# echo $PATH |cut -d '
/usr/kerberos/sbin:/usr/local/sbin


举例2:多行分割

[root@localhost ~]# last -5
root     pts/1        :0.0             Wed Mar  5 09:41   still logged in   
root     :0                            Wed Mar  5 09:40   still logged in   
root     :0                            Wed Mar  5 09:40 - 09:40  (00:00)    
reboot   system boot  2.6.18-371.el5   Wed Mar  5 09:20          (05:08)    
root     pts/1        :0.0             Tue Mar  4 15:27 - crash  (17:53)    
[root@localhost ~]# last -5|cut -d ' ' -f 1
root
root
root
reboot
root

举例3:范围选取

[root@localhost ~]# export
declare -x COLORTERM="gnome-
declare -x DBUS_SESSION_BUS_
declare -x DESKTOP_SESSION="
declare -x DESKTOP_STARTUP_I
declare -x DISPLAY=":0.0"
[root@localhost ~]# export|cut -c 12-
COLORTERM="gnome-terminal"
DBUS_SESSION_BUS_ADDRESS="unix:abstract=/tmp/dbus-OeMZpvhP93,guid=30f2d841bcc5b92980611600531680a3"
DESKTOP_SESSION="default"
DESKTOP_STARTUP_ID=""
DISPLAY=":0.0"

 

grep

 

分析一行信息,若当中存在我们需要的信息,则将该行输出,grep后还可接正则表达式或通配符进行查询。

 

语法:grep [-acinv] [-A] [-B] [--color=auto] ‘查找字符串’ filename

选项与参数:

-a:binary文件以text文件方式查找数据

-c:计算‘查找字符串’次数

-i:忽略大小写

-n:输出行号

-v:反向选择

-A:后面可跟数字,代表除了本行外,后续的n行也都列出来

-B: 后面可跟数字,代表除了本行外,前面的n行也都列出来

--color=auto: 关键字部分添加颜色

 

举例:

[root@localhost ~]# last -3|grep 'root'
root     pts/1        :0.0             Wed Mar  5 09:41   still logged in   
root     :0                            Wed Mar  5 09:40   still logged in   
root     :0                            Wed Mar  5 09:40 - 09:40  (00:00)    
[root@localhost ~]# last -5|grep -vn 'root'
4:reboot   system boot  2.6.18-371.el5   Wed Mar  5 09:20          (05:33)    
6:
7:wtmp begins Fri Feb 14 10:32:51 2014
[root@localhost ~]# last |grep -c 'root'
84
[root@localhost ~]# last -5|grep -n 'roo*' = >通配符查找
1:root     pts/1        :0.0             Wed Mar  5 09:41   still logged in 
2:root     :0                            Wed Mar  5 09:40   still logged in 
3:root     :0                            Wed Mar  5 09:40 - 09:40  (00:00)  
5:root     pts/1        :0.0             Tue Mar  4 15:27 - crash  (17:53)  

 

排序命令

 

sort

 

sort可以按照不同的数据类型来排序,例如按数字或文字排序,排序结果也受语系编码的影响,例如有的语系字符是这么排序的AaBbCc….建议语系使用LANG=C

 

语法:sort [-fbMnrtuk]文件或输入流

选项与参数:

-f:忽略大小写

-b:忽略最前面的空格

-M:以月份(英文)来排序

-r:反向排序

-t:分隔符与-k连用

-u:就是uniq

-k:以那个field的进行排序

 

举例1

[root@localhost ~]# cat /etc/passwd |sort -
avahi:x:70:70:Avahi daemon:/:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
cimsrvr:x:100:500:tog-pegasus OpenPegasus WBEM/CIM services:/var/lib/Pegasus:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

举例2:用‘:’分割第三段进行排序

[root@localhost ~]# cat /etc/passwd |sort -t ':' -k 3
root:x:0:0:root:/root:/bin/bash
cimsrvr:x:100:500:tog-pegasus OpenPegasus WBEM/CIM services:/var/lib/Pegasus:/sbin/nologin
luci:x:101:101::/var/lib/luci:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin

uniq

 

将重复的数据仅列出一列

 

语法:uniq [-ic]

选项与参数:

-i:忽略大小写

-c:进行计数

举例:

[root@localhost ~]# last|cut -d ' ' -f 1 |sort|uniq -c|sort -n
      1 wtmp
      3 tkf
     26 reboot
     84 root
 => last|cut -d ' ' -f 1 |sort 截取登录名并排序
=> uniq -c删除重复列,并计数
=>sort –n 按照计数排序

wc

 

wc可以帮助我们统计文件字符信息

 

语法:wc [lwm]

选项与参数:

-i:仅列出行

-w:仅列初子

-m:字符数

 举例:

[root@localhost ~]# wc /etc/man.config 
141  722 4617 /etc/man.config
[root@localhost ~]# cat /etc/man.config |wc
    141     722    4617
=>分别代表行数,字数,字符数

双重数据流(tee)

 

前面提到输出数据流介质可以是设备或文件,但数据流只能被一个介质全部接收,那么如果希望数据可以被2个介质接收就需要使用双重数据流,简单的说,如果你既想将输出数据流保存到文件也想同时控制台也会显示,那你就需要使用这个了

 

语法:tee [-a] file

选项与参数:-a:以累加的方式进行添加

举例

[root@localhost ~]# export|tee export.list|cut -c 12-
COLORTERM="gnome-terminal"
DBUS_SESSION_BUS_ADDRESS="unix:abstract=/tmp/dbus-OeMZpvhP93,guid=30f2d841bcc5b92980611600531680a3"
DESKTOP_SESSION="default"
[root@localhost ~]# vim export.list
declare -x COLORTERM="gnome-terminal"
declare -x DBUS_SESSION_BUS_ADDRESS="unix:abstract=/tmp/dbus-OeMZpvhP93,guid=30f2d841bcc5b92980611600531680a3"
declare -x DESKTOP_SESSION="default"

字符转换命令

 

tr

 

tr可以用来删除和替换一些文字信息

 

说明,tr只是改变输出内容,并不会真正去修改文件的内容

语法:tr –d  ‘字符

             tr –s  ‘原字符’‘替换字符

选项与参数:

-d:删除

-s:替换

举例:

trfile文件内容
abcdefgh
abcdefgh
abcdefgh
[root@localhost ~]# cat trfile |tr -s 'b' 'B'  =>替换
aBcdefgh
aBcdefgh
aBcdefgh
[root@localhost ~]# cat trfile |tr -d 'b'  =>删除
acdefgh
acdefgh
acdefgh

=>操作结束后trfile文件内容不会有任何改变

col

 

col主要将一些特殊字符进行转换

 

语法:col [-xb]

选项与参数:

-x:tab键转成相应的空格

-b:在文字内有反斜杠,仅保留反斜杠后面接的那个字符

举例1:去掉反斜杠(^H)

[root@bogon ~]# man col > /root/col.man
[root@bogon ~]# cat -A /root/col.man|more 
N^HNA^HAM^HME^HE$
     c^Hco^Hol^Hl - filter reverse line feeds from input$

[root@bogon ~]# man col |col -b > /root/col.b.man
[root@bogon ~]# cat -A /root/col.b.man|more 
     col - filter reverse line feeds from input$


举例2:将TAB转换为空格 (^I)

[root@bogon ~]# cat -A /etc/man.config|more # MANPATH^I/opt/*/man$
# MANPATH^I/usr/lib/*/man$
# MANPATH^I/usr/share/*/man$
# MANPATH^I/usr/kerberos/man$

[root@bogon ~]# cat /etc/man.config |col -x > /root/man.tab.config
[root@bogon ~]# cat -A /root/man.tab.config|more
# MANBIN                pathname$
# MANPATH               manpath_element [corresponding_catdir]$
# MANPATH_MAP           path_element    manpath_element$

expand

 

[tab]按键转为空格键

 

语法:expand [–t] file

选项与参数:

-t:[tab] 按键替换多少个空格字符

举例

[root@localhost ~]# grep '^MANPATH' /etc/man.config |head -n 3|cat -A
MANPATH^I/usr/man$
MANPATH^I/usr/share/man$
MANPATH^I/usr/local/man$
[root@localhost ~]# grep '^MANPATH' /etc/man.config |head -n 3|expand -6|cat -A
MANPATH     /usr/man$
MANPATH     /usr/share/man$
MANPATH     /usr/local/man$

切割命令(split)

 

语法:split [-bl] file PREFIX

选项与参数:

-b:后面可接欲切割的文件大小

-1:以行数进行切割

PREFIX:切割后文件的前导符

举例1:切割文件

[root@localhost ~]# ll -h /etc/termcap 
-rw-r--r-- 1 root root 789K 2007-01-07 /etc/termcap
[root@localhost ~]# split -b 300k /etc/termcap newter
[root@localhost ~]# ll -h newter*
-rw-r--r-- 1 root root 300K 03-06 09:56 newteraa
-rw-r--r-- 1 root root 300K 03-06 09:56 newterab
-rw-r--r-- 1 root root 189K 03-06 09:56 newterac

举例2 :合成文件

[root@localhost ~]# cat newter* >> termap-back
[root@localhost ~]# ll -h termap-back 
-rw-r--r-- 1 root root 789K 03-06 10:02 termap-back

参数代换(xargs)

 

参数代换的作用:

1.       作为某些指令的参数。比如which, finger ,find ,whereis

2.       作为某些不支持管道命令的输入数据流

 

语法:xargs [-epn] command

选项与参数:

-e:就是EOF的意思,后面可接一个字符串,当分析到这个字符串时,就会停止继续工作

-p:在执行每个参数时,都会询问用户

-n:后面接次数,执行command的次数

举例1:指令参数

[root@localhost ~]# cat ./xargsfile 
cd 
ll
grep
[root@localhost ~]# cut -d ' ' -f 1 ./xargsfile|xargs whereis
cd: /usr/share/man/man1p/cd.1p.gz /usr/share/man/man1/cd.1.gz
ll:
grep: /bin/grep /usr/share/man/man1p/grep.1p.gz /usr/share/man/man1/grep.1.gz

举例2:作为输入数据流

[root@localhost ~]# find /sbin/ -perm +7000|ls -l
总计 227644
-rw------- 1 root root      1377 02-14 10:29 anaconda-ks.cfg
drwxr-xr-x 2 root root      4096 02-21 13:30 Desktop
…….
=>ls 不支持管道命令,一次查询的结果是~/下的内容
[root@localhost ~]# find /sbin/ -perm +7000|xargs ls -l
-rwsr-xr-x 1 root root 73108 10-02 05:10 /sbin/mount.nfs
-rwsr-xr-x 1 root root 73112 10-02 05:10 /sbin/mount.nfs4
…..
=>将find查询到的内容作为输入数据流供ls使用


 

0
0
分享到:
评论

相关推荐

    Linux学习笔记Linux学习资料Linux教程

    【linux学习笔记--17】POSIX IPC——消息队列.doc 【linux学习笔记--18】POSIX IPC——信号量.doc 【linux学习笔记--19】...【linux学习笔记-5】编写自己的ls命令.doc 【linux学习笔记-6】文件IO操作--读写、重定向等.

    非常宝贵的LINUX学习笔记

    【linux学习笔记-5】编写自己的ls命令 【linux学习笔记-6】文件IO操作--读写、重定向等 【linux学习笔记-7】用户标识UID与有效用户标识EUID 【linux学习笔记-8】Linux进程相关系统调用(1) 【linux学习笔记-9】...

    Windows cmd 管道过滤命令findstr 学习文档

    平时使用linux习惯了,管道命令是使用非常高频的,使用cmd也是想要,但是平时使用很少所以就忘记了,这里做个笔记。分享给大家。 Windows cmd 管道过滤命令findstr 学习文档 findstr命令类似于linux中的grep命令。 ...

    Linux基本命令学习笔记

    Linux基本命令笔记 用户管理,管道和重定向,文件权限

    Linux命令学习笔记

    主要教大家如何使用Linux命令写出Shell脚本。涉及Linux管道,常用的字符处理cat、grep、tail、echo等命令。同时介绍了环境、作用域、流程控制、Shell脚本的建立与执行等。并赋上了相关的案例。

    cmd操作命令和linux命令大全收集

    CMD命令:开始->运行->键入cmd或command(在命令行里可以看到系统版本、文件系统版本) 命令大全 1. gpedit.msc-----组策略 2. sndrec32-------录音机 3. Nslookup-------IP地址侦测器 ,是一个 监测网络中 DNS...

    Linux基础命令学习——重定向与管道符(五)

    今天来写一篇关于学习Linux基础命令——重定向与管道符命令的文章,也实践了很多,总结给大家一起学习! 重定向 输入重定向是指把文件导入命令中; 输出重定向是指把原本输出到屏幕上的信息写入指定的文件中;(输出...

    Linux简明教程.rar

    一、基本命令----------------------------------------------------------------------------------------- 1.显示文件名字 2.显示文本文件内容 3.删除文件 4.显示系统名字 5.关机或者重启-------------------...

    linux学习记录

    linux 相关学习记录: ls -l 获得当前目录下的所有文件 2、cd 获得指定文件目录位置 3、pwd 获得当前目录位置 4、touch 在指定目录下生成一个空文件 5、cp 将某个文件复制到目标文件 mv 改变文件名或移动文件 rm ...

    Linux课堂笔记.pdf

    2.8 管道相关命令 2.8.1 grep 2.8.2 echo 2.8.3 &&和 || 2.8.4 软硬连接 2.8.5 cut命令 2.8.6 sort命令 2.8.7 wc命令 2.8.8 uniq命令 2.8.9 tee命令 2.8.10 tr命令 2.8.11 split命令 2.8.12 awk命令

    Linux的常用命令cat、sed、zip等用法,以及shell编程的基本语法,以及makefile编写方式等等

    这个是我在学习Linux的时候做的思维导图笔记,主要是Linux的一些基础知识。免费提供下载,学习分享。 该文档分为以下几个部分: 1.shell语法:包含格式化输入输出、数组定义、变量定义方法、运算方法、流程控制、...

    Linux操作之输入输出重定向和管道

    Linux操作之输入输出重定向和管道 作者:佚名 出处:中国自学编程网收集整理 发布日期:2008-07-12  Unix下使用标准输入stdin和标准输出stdout,来表示每个命令的输入和输出,还使用一个标准错误输出stderr用于...

    Shell脚本学习笔记

    第1章 BashShell命令 6 1.1 Shell提示符 6 1.2 文件与目录Shell命令 7 1.2.1 更改目录命令(cd) 7 1.2.2 列表命令(ls) 7 1.2.3 操作文件命令 10 1.2.4 目录处理命令 14 1.2.5 查看文件内容命令 15 1.3 监控程序 20 ...

    Linux教程 Shell精华文章.chm

    命令历史记录(Command history)和别名 重定向和管道 改变提示符 进程控制(Job control) 如何用户化配置你的bash shell 另外你还将看到一些最常用的bash命令和内存变量的用法,读完本文后你将能更快和更有效地...

    Linux系统故障诊断与排除--James Kirkland

    11.1.2 假脱机程序“管道工程” 237 11.1.3 术语定义 240 11.2 打印机类型 242 11.3 连接类型 243 11.3.1 本地串行打印 244 11.3.2 本地USB打印 246 11.3.3 本地并行打印 249 11.3.4 远程打印 249 ...

    Linux管理员指南

    命令行 68 6.1 BASH简介 68 6.1.1 作业控制 69 6.1.2 环境变量 69 6.1.3 管道 70 6.1.4 重定向 70 6.1.5 BASH的命令行快捷键 71 6.2 文档工具 72 6.2.1 man命令 72 6.2.2 texinfo系统 73...

    LINUX 24学时教程

    第二部分 学习Linux操作系统的基本命令 第4学时 阅读与浏览命令 46 4.1 使用man命令获取帮助 46 4.2 浏览及搜索文件系统 48 4.2.1 使用cd命令进入不同的目录 48 4.2.2 使用pwd命令查看自己所在的位置 48 4.2.3 使用...

Global site tag (gtag.js) - Google Analytics