系统函数
调用系统自带的一些函数
basename:
这直接给个例子吧,其实就是截取路径中的文件名称
dirname:
获取文件的绝对路径
自定义函数
基本语法:
[ function ]funname[ () ]
{
Action;
[return int;]
}
funname
举个栗子:定义一个加法函数:
(后面就都是从脚本内容直接写了哈)
#!/bin/bash
看下运行结果:
shell 工具
cut:
用来切分:cut[选项参数] filename
-f 表示取几列
-d 表示用什么分隔符来切分
定义一个cut文本文件:
myz myz myz
loves likes hates
her typing tobe
family code fat
先来输出个第一列:
再来输出个2,3列
在cut.txt中切割出love
顺嘴一句,把一行切出来:
再来一个,选取系统PATH的变量值,从第二个“:”之后输出:
sed
流编辑器,一次处理一行内容。
-e 直接在指令列模式上进行sed动作指令
a 新增,a的后面可以跟字符串,在下一行出现
d 删除
s 查找并替换
还是建一个内容和刚刚一样的txt文件吧:
然后来操作–
在第二行插入“ha ha ha”
但是文件本身没变哦!!还是原来的文件!只是输出变啦!
接下来,将包含“loves”的一行删除
把文件中的myz替换成xiaomei
awk
数据准备
cp
搜索passwd文件以root关键字开头的所有行,并输出该行的第7列。
-F:
搜索passwd文件以root关键字开头的所有行,并输出该行的第1列和第7列,中间以“,”号分割。
-F:
注意:只有匹配了pattern的行才会执行action
只显示/etc/passwd的第一列和第七列,以逗号分割,且在所有行前面添加列名user,shell在最后一行添加"dahaige,/bin/zuishuai"
-F :
注意:BEGIN 在所有数据读取行之前执行;END 在所有数据执行之后执行。
将passwd文件中的用户id增加数值1并输出
-v i=1
awk的内置变量
FILENAME 文件名
NR 已读的记录数
NF 浏览记录的域的个数(切割后,列的个数)
案例实操
统计passwd文件名,每行的行号,每行的列数
-F:
切割IP
| grep
查询sed.txt中空行所在的行号
'/^$/{print NR}' sed
sort
排序 -n:按照数值的大小来排序
-r:以相反的顺序来排序
-t:设置排序时所用的分割字符
-k:指定需要排序的列