您的位置:首页 > 运维架构 > Shell

shell脚本学习2

2016-04-11 22:25 453 查看
前面已经介绍过shell脚本的基本的使用的方法,在这篇中我将介绍三个字符截取命令cut和awk以及sed命令。

1    cut命令

cut [选项] 文件名

选项:

-f 列号: 提取第几列 (列号之间用,分开,列号之间是用制表符分开)

-d 分隔符: 按照指定分隔符分割列("分隔符")

cut命令与grep命令经常联合使用

cut命令默认是以tab制表符为分隔符的

2    awk命令

awk '条件1 {动作1}  条件2 {动作2}......'    文件名

条件:

一般使用关系表达式作为条件

x > 10 判断变量x是否大于10

x >= 10 大于等于10

x <= 10 小于等于10

动作:

格式化输出

流程控制语句

eg:

查看根目录是否超过%80

df -h | grep sdb5 | awk '{print $5}' | cut -d "%" -f 1

得到根目录的使用量

除了这里的用法外,awk还有其它的一些用法:

FS内置变量(使用awk命令时,指定的分隔符)

cat  /etc/passwd | grep "/bin/bash" | awk ' BEGIN {FS=":"}  {printf $1 "\t" $3 "\n"} '

awk 'END {printf "The End \n"} {printf $2 "\t" $6 "\n"}'  文件名

BEGIN和END命令

BEGIN {动作}是在所有命令执行之前执行的命令

END {动作}是在所有命令执行之后执行的命令

awk命令还支持关系运算符。

3    sed命令

sed是一种几乎包括在所有UNIX平台(包括Linux)的轻量级流编辑器。sed主要是用来将数据进行选取,替换,新增的命令。

sed [选项]  '[动作]'   文件名

选项:

-n      一般sed命令会把所有数据都输出屏幕,如果加入此选择,则只会把经过sed命令处理的行输出的结果

-e     允许对输入数据应用多条sed命令编辑(命令之间用;隔开)

-i      用sed的修改结果直接修改读取数据的文件,而不是由屏幕输出(可以修改文件)

动作:

a\   追加,在当前行后添加一行或多行,添加多行时,除最后一行外,每行末尾需要用"\"代表数据未完结

c\   行替换,用c后面字符串替换原数据行,替换多行时,除最后一行外,每行末尾用"\"代表数据未完结

i\    插入,在当期行前插入一行或多行。插入多行时,除最后一行外,每行末尾需要用"\"代表数据未完结

d   删除,删除指定的行

p   打印,输出指定的行

s   字串替换,用一个字符串替换另外一个字符串。格式为"行范围s/旧字符串/新字符串/g" (和vim中的替换格式类似)

sed -n '2p' 文件名 只打印文件中的第二行

sed '2a hello'  文件名 在第二行后追加

4    排序命令

sort  [选项]   文件名

选项:

-f---->忽略大小写

-n---->以数值型进行排序,默认使用字符串排序

-r---->反向排序

-t---->指定分隔符,默认分隔符是制表符

-k n,m---->按照指定的字段范围排序,从第n字段开始,m字段结束(默认到行尾)

再次总结:

我在这里写的就是入门的shell脚本学习,如果你已经了解了shell的语法,那么这里可以帮助你更好的复习;如果你还没有接触过shell学习,那么这里可以让你在最短的时间内掌握它。在这里写的只是很少的一部分,而且我也是初学者,在以后,可能写一些linux shell测试用例。这里有我学习的一些代码例子,有兴趣的话,欢迎下载学习。点击打开链接

最后,我想说的是:如果有问题,大家可以一起交流和学习
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: