Shell高级命令

Shell脚本编程学习5--管道命令(pipe)
分类: Linux/Unix 2013-05-27 16:22 84人阅读 评论(0) 收藏 举报
一、管道命令的介绍

1、管道命令“|”仅能处理经由前面一个命令传来的正确信息,也就是standard output的信息,对于standard error并没有直接处理能力。

2、管道命令示意图:

command1 | command2 | command3

即:command1正确执行的数据传递给command2,command2正确执行的数据传递给command3。

3、在每个管道后面接的第一个数据必须是命令,而且这个命令必须能够接收standard input的数据才行,这样的命令才是管道命令。

二、选取命令:cut、grep

将一段数据以行为单位进行分析,取出我们所想要的,或者经分析关键字,取出我们所想要的那一行。

1、cut

(1)作用:在一行信息中取出某部分我们想要的。

(2)语法:

cut -d '分隔符' -f fields 用于分隔字符

cut -c 字符范围 用于排列整齐的信息

(3)参数:

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

-f:依据-d的分隔符将一段信息切割成数段,用-f取出第几段的意思

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

(4)例子:



上面就是取出以:为分隔符的第一段数据。



上面是取出以:为分隔符的第一段和第三段数据。


以上例子,说明取出每一行12个字符以后的数据。

总结:

cut的主要用途在于将同一行里面的数据进行分解,最常用的使用在分析一些数据或文字数据的时候。以某些字符当作切割的参数,然后来将数据加以切割,以取得我们所需要的数据。

2、grep

(1)作用:分析一行信息,若当中有我们所需要的信息,就将该行拿出来。

(2)语法:grep [-acinv] [--color=auto] '查找字符串' filename

(3)参数:

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

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

-i:忽略大小写的不同

-n:顺便输出行号

-v:反向选择,即显示出没有‘查找字符串’内容的一行

--color=auto:可以将找到的关键字部分加上颜色显示

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

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

(4)例子:


三、排序命令:sort、wc、uniq

1、sort:

(1)作用:排序,可以按照不同的数据类型排序

(2)语法:sort [-fbMnrtuk] [file or stdin]

(3)参数:

-f:忽略大小写

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

-M:以月份的名字来排序,英文月份

-n:使用纯数字排序(默认是一文字类型来排序的)

-r:反向排序

-t:分隔符,默认是用TAB键来分割的

-u:uniq相同的数据中,仅出现一行代表

-k:以那个区间来进行排序

(4)例子:

默认以文字类型来排序:


以:来分隔,以第三列来排序:


以:来分隔,以第三列的数字排序:


2、wc:
(1)作用:统计一个文件里有多少字、多少行、多少字符

(2)语法:wc [-lwm]

(3)参数:

-l:仅列出行

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

-m:多少字符

(4)例子:


使用last可以输出登录者,但是last最后两行并非帐号内容


那么用下面的一行命令即可取得这个月登录系统的总人次


3、uniq:

(1)作用:将重复的数据仅列出一个显示

(2)语法:uniq [-ic]

(3)参数:

-i:忽略大小写字符的不同

-c:进行计数

(4)例子:


四、双向重定向:tee

1、作用:可以同时将数据流送与文件与屏幕

2、语法:tee [-a] file

3、参数:

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

4、例子:


五、字符转换命令:tr、col、join、paste、expand

1、tr:

(1)作用:删除一段信息当中的文字,或者进行文字信息的替换。

(2)语法:tr [-ds] SET1 ……

(3)参数:

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

-s:替换掉重复的字符

(4)例子:

将last输出的信息中所有的小写字符变成大写字符


将/etc/passwd输出信息中的冒号删除


2、col:

(1)作用:经常用于man page转存为纯文本文件以方便查阅的功能

(2)语法:col [-xb]

(3)参数:

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

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

(4)例子:


^I 就是tab,替换后:


3、join:

(1)作用:将两个文件当中有相同数据的那一行加在一起

(2)语法:join [-ti12] file1 file2

(3)参数:

-t:默认以空格符分隔数据,并且对比第一个字段的数据,如果两个文件相同,则将两条数据连成一行,且第一个字段放在第一个

-i:忽略大小写

-1:代表第一个文件要用哪个字段来分析的意思

-2:代表第二个文件要用哪个字段来分析的意思

(4)例子:


注意:在使用join之前,你所需要处理的文件应该要事先经过排序处理的。

4、paste:

(1)作用:直接将相同行的数据贴在一起,中间以tab键隔开

(2)语法:paste [-d] file1 file2

(3)参数:

-d:后面可接分隔符,默认是tab键来分隔的

- :如果file部分习写成- ,表示来自standard input的数据意思。

(4)例子:

5、expand:

(1)作用:将tab键转成空格键

(2)语法:expand [-t] file

(3)参数:

-t:后面可以接数字,一般来说一个tab键可以用8个空格键替换

(4)例子:

六、切割命令:split

1、作用:将一个大文件依据文件大小或行数来切割成为小文件,快速又有效

2、语法:split [-bl] file PREFIX

3、参数:

-b:后面可以接切割成的文件大小,可以加单位,如:b、k、 m等

-l:以行数来进行切割

PREFIX:代表前导符,可以作为切割文件的前导文字。

4、例子:

七、参数代换:xargs

1、作用:产生某个命令的参数的意思,xargs可以读入stdin的数据,并且以空格符或断行字符进行分辨,将stdin的数据分隔成为arguments

2、语法:xargs [-0epn] command

3、参数:

-0:如果输入的stdin有特殊字符,例如` 、\空格等,这个参数可以将它还原成一般字符。

-e:EOF

-p:在执行每个命令时都会询问用户

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

当xargs后面没有接任何的命令时,默认是echo来进行输出

4、例子:



八、关于减号-的用途


(1)作用:

(2)语法:

(3)参数:

(4)例子:

(1)作用:

(2)语法:

(3)参数:

(4)例子:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux Shell高级技巧实战总结 一、将输入信息转换为大写字符后再进行条件判断 二、为调试信息设置输出级别 三、判断参数是否为数字 四、判断整数变量的奇偶性 五、将Shell命令赋值给指定变量,以保证脚本的移植性 六、获取当前时间距纪元时间(1970年1月1日)所经过的天数 七、非直接引用变量 八、在循环中使用管道的技巧 九、自链接脚本 十、Here文档的使用技巧 十一、获取进程的运行时长(单位: 分钟) 十二、模拟简单的top命令 十三、格式化输出指定用户的当前运行进程 十四、用脚本完成which命令的基本功能 十五、验证输入信息是否合法 十六、整数验证 十七、判断指定的年份是否为闰年 十八、将单列显示转换为多列显示 十九、将文件的输出格式化为指定的宽度 二十、监控指定目录下磁盘使用空间过大的用户 二十一、编写一个更具可读性的df命令输出脚本 二十二、编写一个用于添加新用户的脚本 二十三、kill指定用户或指定终端的用户进程 二十四、判断用户输入(是/否)的便捷方法 二十五、通过FTP下载指定的文件 二十六、文件锁定 二十七、用小文件覆盖整个磁盘 二十八、统计当前系统中不同运行状态的进程数量 二十九、浮点数验证 三十、统计英文文章中每个单词出现的频率 Linux Shell经典实例解析--Oracle启动脚本(上) Linux Shell经典实例解析--Oracle启动脚本(下)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值