Linux管线命令
来源:互联网 发布:网络棋牌游戏赌博平台 编辑:程序博客网 时间:2024/06/10 02:36
一、什么是管线命令
bash 命令运行的时候有输出的数据会出现! 那么如果这群数据必需要经过几道手续之后才能得到我们所想要的格式,应该如何来配置? 这就牵涉到管线命令的问题了 (pipe) ,管线命令使用的是『 | 』这个界定符号!
例:
[root@www ~]# ls -al /etc | less
如此一来,使用 ls 命令输出后的内容,就能够被 less 读取,并且利用 less 的功能,我们就能够前后翻动相关的信息了!管线命令主要有两个比较需要注意的地方:
- 管线命令仅会处理 standard output,对于 standard error output 会予以忽略
- 管线命令必须要能够接受来自前一个命令的数据成为 standard input 继续处理才行。
① 截取命令 cut , grep
Ⅰ、 cut 命令
cut 主要的用途在于将『同一行里面的数据进行分解!』最常使用在分析一些数据或文字数据的时候! 这是因为有时候我们会以某些字符当作分割的参数,然后来将数据加以切割,以取得我们所需要的数据。
语法:
[root@www ~]# cut -d'分隔字符' -f fields <==用于有特定分隔字符[root@www ~]# cut -c 字符区间 <==用于排列整齐的信息选项与参数:-d :后面接分隔字符。与 -f 一起使用;-f :依据 -d 的分隔字符将一段信息分割成为数段,用 -f 取出第几段的意思;-c :以字符 (characters) 的单位取出固定字符区间;例一:
[root@localhost ~]# echo $PATH/usr/java/jdk1.7.0_79/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin[root@localhost ~]# echo $PATH | cut -d ':' -f 3-5 --> 按分号分割$PATH ,并取第三个到第五个显示/usr/local/bin:/sbin:/bin例二:
[root@localhost ~]# exportdeclare -x CLASSPATH=".:/usr/java/jdk1.7.0_79/lib/dt.jar:/usr/java/jdk1.7.0_79/lib/tools.jar"declare -x G_BROKEN_FILENAMES="1"declare -x HISTCONTROL="ignoredups"declare -x HISTSIZE="1000"declare -x HOME="/root"declare -x HOSTNAME="localhost.localdomain"declare -x JAVA_HOME="/usr/java/jdk1.7.0_79"declare -x LANG="en_US.UTF-8"declare -x LESSOPEN="|/usr/bin/lesspipe.sh %s"declare -x LOGNAME="root"declare -x MAIL="/var/spool/mail/root"declare -x OLDPWDdeclare -x PATH="/usr/java/jdk1.7.0_79/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin"declare -x PWD="/root"declare -x SHELL="/bin/bash"declare -x SHLVL="1"declare -x SSH_ASKPASS="/usr/libexec/openssh/gnome-ssh-askpass"declare -x TERM="vt100"declare -x USER="root"[root@localhost ~]# export | cut -c 12- -- >去掉前面的 declare -x CLASSPATH=".:/usr/java/jdk1.7.0_79/lib/dt.jar:/usr/java/jdk1.7.0_79/lib/tools.jar"G_BROKEN_FILENAMES="1"HISTCONTROL="ignoredups"HISTSIZE="1000"HOME="/root"HOSTNAME="localhost.localdomain"JAVA_HOME="/usr/java/jdk1.7.0_79"LANG="en_US.UTF-8"LESSOPEN="|/usr/bin/lesspipe.sh %s"MAIL="/var/spool/mail/root"OLDPWDPATH="/usr/java/jdk1.7.0_79/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin"PWD="/root"SHELL="/bin/bash"SHLVL="1"SSH_ASKPASS="/usr/libexec/openssh/gnome-ssh-askpass"TERM="vt100"USER="root"Ⅱ、 grep 命令
语法:
[root@www ~]# grep [-acinv] [--color=auto] '搜寻字符串' filename选项与参数:-a :将 binary 文件以 text 文件的方式搜寻数据-c :计算找到 '搜寻字符串' 的次数-i :忽略大小写的不同,所以大小写视为相同-n :顺便输出行号-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行!--color=auto :可以将找到的关键词部分加上颜色的显示!例一:
[root@localhost ~]# last | grep 'elgin' --> last 的结果当中,显示出包含有elgin字符串的行elgin pts/0 192.168.108.1 Wed Dec 16 02:50 - 02:54 (00:04) elgin tty1 :0 Wed Dec 16 02:49 - down (02:09) elgin tty3 Tue Dec 15 20:41 - crash (00:13) elgin pts/0 :0.0 Tue Dec 15 20:15 - 20:35 (00:20) elgin tty1 :0 Tue Dec 15 20:11 - crash (00:43) elgin pts/0 :0.0 Tue Dec 15 05:17 - 05:18 (00:01) elgin pts/0 :0.0 Tue Dec 15 05:13 - 05:13 (00:00) elgin tty1 :0 Tue Dec 15 04:54 - crash (15:15) elgin tty7 :0 Tue Dec 15 04:30 - down (00:11)例二:
[root@localhost ~]# last | grep -v 'root' --> last结果当中,显示出不包含root字符串的行reboot system boot 2.6.32-431.el6.x Mon Dec 21 11:33 - 21:22 (3+09:48) reboot system boot 2.6.32-431.el6.x Wed Dec 16 20:30 - 11:15 (4+14:44) reboot system boot 2.6.32-431.el6.x Wed Dec 16 04:59 - 20:29 (15:30) elgin pts/0 192.168.108.1 Wed Dec 16 02:50 - 02:54 (00:04) elgin tty1 :0 Wed Dec 16 02:49 - down (02:09) reboot system boot 2.6.32-431.el6.x Wed Dec 16 02:48 - 04:58 (02:10) reboot system boot 2.6.32-431.el6.x Wed Dec 16 02:32 - 02:47 (00:15) reboot system boot 2.6.32-431.el6.x Wed Dec 16 01:12 - 02:31 (01:19) reboot system boot 2.6.32-431.el6.x Wed Dec 16 00:38 - 01:11 (00:33) reboot system boot 2.6.32-431.el6.x Tue Dec 15 20:54 - 01:11 (04:16) elgin tty3 Tue Dec 15 20:41 - crash (00:13) elgin pts/0 :0.0 Tue Dec 15 20:15 - 20:35 (00:20) elgin tty1 :0 Tue Dec 15 20:11 - crash (00:43) reboot system boot 2.6.32-431.el6.x Tue Dec 15 20:09 - 01:11 (05:02) elgin pts/0 :0.0 Tue Dec 15 05:17 - 05:18 (00:01) elgin pts/0 :0.0 Tue Dec 15 05:13 - 05:13 (00:00) elgin tty1 :0 Tue Dec 15 04:54 - crash (15:15) reboot system boot 2.6.32-431.el6.x Tue Dec 15 04:53 - 01:11 (20:17) elgin tty7 :0 Tue Dec 15 04:30 - down (00:11) reboot system boot 2.6.32-431.el6.x Tue Dec 15 12:24 - 04:41 (-7:-43)例三:
[root@localhost ~]# last | grep 'elgin' | cut -d '-' -f 1 --> last结果中,显示出包含elgin的行,并按‘-’ 截取 取第一段elgin pts/0 192.168.108.1 Wed Dec 16 02:50 elgin tty1 :0 Wed Dec 16 02:49 elgin tty3 Tue Dec 15 20:41 elgin pts/0 :0.0 Tue Dec 15 20:15 elgin tty1 :0 Tue Dec 15 20:11 elgin pts/0 :0.0 Tue Dec 15 05:17 elgin pts/0 :0.0 Tue Dec 15 05:13 elgin tty1 :0 Tue Dec 15 04:54 elgin tty7 :0 Tue Dec 15 04:30例四:
[root@localhost ~]# grep --color=auto 'test' /root/catfile --> test关键字高亮显示this is atest② 排序命令 sort ,wc ,uniq
Ⅰ、 sort 命令
语法:
[root@www ~]# sort [-fbMnrtuk] [file or stdin]选项与参数:-f :忽略大小写的差异,例如 A 与 a 视为编码相同;-b :忽略最前面的空格符部分;-M :以月份的名字来排序,例如 JAN, DEC 等等的排序方法;-n :使用『纯数字』进行排序(默认是以文字型态来排序的);-r :反向排序;-u :就是 uniq ,相同的数据中,仅出现一行代表;-t :分隔符,默认是用 [tab] 键来分隔;-k :以那个区间 (field) 来进行排序的意思例一:
[root@localhost ~]# cat /etc/passwd | sort --> 显示文件中的内容,并排序 【从结果来看,默认以首字母来排序】abrt:x:173:173::/etc/abrt:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinapache:x:48:48:Apache:/var/www:/sbin/nologinavahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologinbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologindbus:x:81:81:System message bus:/:/sbin/nologinelgin:x:500:500:CenterOs_Seth:/home/elgin:/bin/bashftp:x:14:50:FTP User:/var/ftp:/sbin/nologingames:x:12:100:games:/usr/games:/sbin/nologingdm:x:42:42::/var/lib/gdm:/sbin/nologingopher:x:13:30:gopher:/var/gopher:/sbin/nologinhaldaemon:x:68:68:HAL daemon:/:/sbin/nologinhalt:x:7:0:halt:/sbin:/sbin/haltlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinmail:x:8:12:mail:/var/spool/mail:/sbin/nologinnobody:x:99:99:Nobody:/:/sbin/nologinntp:x:38:38::/etc/ntp:/sbin/nologinoperator:x:11:0:operator:/root:/sbin/nologinpostfix:x:89:89::/var/spool/postfix:/sbin/nologinpulse:x:497:496:PulseAudio System Daemon:/var/run/pulse:/sbin/nologinroot:x:0:0:root:/root:/bin/bashrtkit:x:499:497:RealtimeKit:/proc:/sbin/nologinsaslauth:x:498:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologinseth:x:501:501:seth:/home/seth:/bin/bashshutdown:x:6:0:shutdown:/sbin:/sbin/shutdownsshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologinsync:x:5:0:sync:/sbin:/bin/synctcpdump:x:72:72::/:/sbin/nologinusbmuxd:x:113:113:usbmuxd user:/:/sbin/nologinuucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologinvcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin例二:
[root@localhost ~]# cat /etc/passwd | sort -t ':' -k 3 --> 按照分号分割之后的第三栏排序root:x:0:0:root:/root:/bin/bashuucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologinoperator:x:11:0:operator:/root:/sbin/nologinusbmuxd:x:113:113:usbmuxd user:/:/sbin/nologinbin:x:1:1:bin:/bin:/sbin/nologingames:x:12:100:games:/usr/games:/sbin/nologingopher:x:13:30:gopher:/var/gopher:/sbin/nologinftp:x:14:50:FTP User:/var/ftp:/sbin/nologinavahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologinabrt:x:173:173::/etc/abrt:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinntp:x:38:38::/etc/ntp:/sbin/nologingdm:x:42:42::/var/lib/gdm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinapache:x:48:48:Apache:/var/www:/sbin/nologinpulse:x:497:496:PulseAudio System Daemon:/var/run/pulse:/sbin/nologinsaslauth:x:498:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologinrtkit:x:499:497:RealtimeKit:/proc:/sbin/nologinelgin:x:500:500:CenterOs_Seth:/home/elgin:/bin/bashseth:x:501:501:seth:/home/seth:/bin/bashsync:x:5:0:sync:/sbin:/bin/syncshutdown:x:6:0:shutdown:/sbin:/sbin/shutdownhaldaemon:x:68:68:HAL daemon:/:/sbin/nologinvcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologinhalt:x:7:0:halt:/sbin:/sbin/halttcpdump:x:72:72::/:/sbin/nologinsshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologinmail:x:8:12:mail:/var/spool/mail:/sbin/nologindbus:x:81:81:System message bus:/:/sbin/nologinpostfix:x:89:89::/var/spool/postfix:/sbin/nologinnobody:x:99:99:Nobody:/:/sbin/nologin例三:
[root@localhost ~]# last | cut -d ' ' -f1 | sort -u --> last 结果按空格分割 之后的第一部分 并按字母顺序排序并去重elginrebootrootwtmpⅡ、 uniq 命令
作用:去掉重复数据
语法:
[root@www ~]# uniq [-ic]选项与参数:-i :忽略大小写字符的不同;-c :进行计数例一
[root@localhost ~]# last | cut -d ' ' -f1 |sort |uniq --> 通sort命令例3 elginrebootrootwtmp
[root@localhost ~]# last | cut -d ' ' -f1 | sort | uniq -c --> 显示各个用户登陆次数 1 9 elgin 11 reboot 23 root 1 wtmpⅢ 、wc命令
作用:统计文档的信息,比如行数,字数,字符数
语法:
[root@www ~]# wc [-lwm]选项与参数:-l :仅列出行;-w :仅列出多少字(英文单字);-m :多少字符;例:
[root@localhost ~]# cat /etc/passwd | wc 32 46 1481
③ 双重重导向命令 tee
tee 会同时将数据流分送到文件去与屏幕 (screen);而输出到屏幕的,其实就是 stdout ,可以让下个命令继续处理!
语法:
[root@www ~]# tee [-a] file选项与参数:-a :以累加 (append) 的方式,将数据加入 file 当中!
例一
[root@localhost ~]# last | tee /root/teefile | cut -d ' ' -f1|sort -u --> 将last的内容存到 /root/teefile 文件同时经过 cut处理之后再显示到屏幕elginrebootrootwtmp[root@localhost ~]# cat /root/teefileroot pts/1 :0.0 Mon Dec 21 04:33 - 22:30 (2+17:56) root pts/0 192.168.108.1 Sun Dec 20 22:49 still logged in root tty1 :0 Sun Dec 20 22:47 still logged in reboot system boot 2.6.32-431.el6.x Mon Dec 21 11:33 - 22:21 (3+10:47) root pts/0 192.168.108.1 Thu Dec 17 20:27 - down (3+14:47) root pts/0 192.168.108.1 Wed Dec 16 20:35 - 05:12 (08:37) root tty1 :0 Wed Dec 16 20:31 - down (4+14:43) reboot system boot 2.6.32-431.el6.x Wed Dec 16 20:30 - 11:15 (4+14:44) root pts/0 192.168.108.1 Wed Dec 16 05:02 - down (15:27) root tty1 :0 Wed Dec 16 05:02 - down (15:27) reboot system boot 2.6.32-431.el6.x Wed Dec 16 04:59 - 20:29 (15:30) root pts/0 192.168.108.1 Wed Dec 16 02:54 - down (02:04) root tty7 :1 Wed Dec 16 02:54 - down (02:04) elgin pts/0 192.168.108.1 Wed Dec 16 02:50 - 02:54 (00:04) elgin tty1 :0 Wed Dec 16 02:49 - down (02:09) reboot system boot 2.6.32-431.el6.x Wed Dec 16 02:48 - 04:58 (02:10) root pts/0 192.168.108.1 Wed Dec 16 02:39 - down (00:07) root tty1 :0 Wed Dec 16 02:36 - down (00:10) reboot system boot 2.6.32-431.el6.x Wed Dec 16 02:32 - 02:47 (00:15) root pts/0 192.168.108.1 Wed Dec 16 01:50 - down (00:41) root pts/0 192.168.108.1 Wed Dec 16 01:13 - 01:49 (00:36) root tty1 :0 Wed Dec 16 01:13 - down (01:17) reboot system boot 2.6.32-431.el6.x Wed Dec 16 01:12 - 02:31 (01:19) root tty7 :0 Wed Dec 16 01:02 - down (00:08) root pts/0 192.168.108.1 Wed Dec 16 00:56 - 01:10 (00:14) root pts/0 192.168.108.1 Wed Dec 16 00:56 - 00:56 (00:00) root tty1 :0 Wed Dec 16 00:40 - 01:02 (00:21) reboot system boot 2.6.32-431.el6.x Wed Dec 16 00:38 - 01:11 (00:33) root pts/2 192.168.108.1 Tue Dec 15 21:02 - crash (03:36) root pts/1 192.168.108.128 Tue Dec 15 21:00 - 21:02 (00:01) root pts/0 :0.0 Tue Dec 15 20:55 - 21:02 (00:06) root tty1 :0 Tue Dec 15 20:55 - crash (03:42) reboot system boot 2.6.32-431.el6.x Tue Dec 15 20:54 - 01:11 (04:16) elgin tty3 Tue Dec 15 20:41 - crash (00:13) elgin pts/0 :0.0 Tue Dec 15 20:15 - 20:35 (00:20) elgin tty1 :0 Tue Dec 15 20:11 - crash (00:43) reboot system boot 2.6.32-431.el6.x Tue Dec 15 20:09 - 01:11 (05:02) elgin pts/0 :0.0 Tue Dec 15 05:17 - 05:18 (00:01) elgin pts/0 :0.0 Tue Dec 15 05:13 - 05:13 (00:00) elgin tty1 :0 Tue Dec 15 04:54 - crash (15:15) reboot system boot 2.6.32-431.el6.x Tue Dec 15 04:53 - 01:11 (20:17) elgin tty7 :0 Tue Dec 15 04:30 - down (00:11) reboot system boot 2.6.32-431.el6.x Tue Dec 15 12:24 - 04:41 (-7:-43) wtmp begins Tue Dec 15 12:24:43 2015
④ 字符转换命令:
Ⅰ、tr 命令
tr 可以用来删除一段信息当中的文字,或者是进行文字信息的替换!
语法:
root@www ~]# tr [-ds] SET1 ...选项与参数:-d :删除信息当中的 SET1 这个字符串;-s :取代掉重复的字符!例一
[root@localhost ~]# last | tr '[a-z]' '[A-Z]' --> 将小写字母转为大写字母ROOT PTS/1 :0.0 MON DEC 21 04:33 - 22:30 (2+17:56) ROOT PTS/0 192.168.108.1 SUN DEC 20 22:49 STILL LOGGED IN ROOT TTY1 :0 SUN DEC 20 22:47 STILL LOGGED IN REBOOT SYSTEM BOOT 2.6.32-431.EL6.X MON DEC 21 11:33 - 22:35 (3+11:01) ROOT PTS/0 192.168.108.1 THU DEC 17 20:27 - DOWN (3+14:47) ROOT PTS/0 192.168.108.1 WED DEC 16 20:35 - 05:12 (08:37)例二
[root@localhost ~]# cat /etc/passwd | tr -d ':' --> 删去结果中的:号rootx00root/root/bin/bashbinx11bin/bin/sbin/nologindaemonx22daemon/sbin/sbin/nologinadmx34adm/var/adm/sbin/nologinlpx47lp/var/spool/lpd/sbin/nologinsyncx50sync/sbin/bin/sync
0 0
- Linux命令:管线命令
- linux--管线命令
- Linux管线命令
- Linux学习之十四、管线命令
- Linux笔记(8)--管线命令
- Linux基础--管道(管线命令)
- 管线命令
- Linux管线命令之截取命令(cut,grep)
- Linux管线命令之排序命令(sort, wc, uniq)
- Linux基础07_管线命令与命名历史
- Linux命令4(Linux命令重定向与管线命令)
- 管线命令 (pipe)
- 【linux学习笔记】命令执行判断依据(';'、'&&'、'||')管线命令('|')以及cut、grep命令
- Linux 管道 管线
- 第十一章 管线命令 (pipe)
- linux学习篇8--- shell,bash讲解 3 数据流重导向 与 管线命令
- linux鸟哥的私房菜读书笔记【管线命令(pipe)】
- Linux管线命令 - cut,grep,sort,uniq,wc,tee,tr,col,join,paste,expand,split,xargs
- HTML5缓存机制浅析:移动端Web加载性能优化
- apache中使用mod_log_slow分析响应慢的请求
- quartz 定时器cron表达式全解析
- php中\r \r\n \t的区别示例介绍
- linux下如何获取cpu的利用率
- Linux管线命令
- Android.os包中一些类的使用
- 电力企业信息化建设解决方案之计量生产分析系统
- VB.Net学习笔记(一)
- html少见标签
- 【剑指offer】2.3.5栈和队列——面试题7:用两个栈实现队列
- ajax+servlet+mysql表格分页
- <iOS>初次运行git前的配置
- 单例模式