linux中,正则表达式用来在文件中匹配符合条件的字符串;通配符用来匹配符合条件的文件名。
基础正则表达式
文件截取命令
grep命令本身也是一个文件提取命令,它是按行搜索的;cut命令是按列提取信息。
cut命令默认的分隔符是制表符(Tab),使用选项-d可以指定分隔符。cut命令一般结合grep命令使用。例如有如下student.txt文件:
输出男生的学生的姓名: grep -v “W” student.txt | cut -f 2
当文件并没有按制表符或者其他符号标准的分割时,cut命令就不够用了。
awk命令:
语法:awk ‘条件1{动作1}条件2{动作2}…’ 文件名
常用条件:BEGIN,END
例子:# awk ‘{printf $2 “\t” $4 “\n”}’ student.txt 输出第2列,第4列
# awk 'BEGIN{print “this begin”} {printf $2 “\t” $4 “\n”} 在第一行输出this begin。(END是在末尾输出)
#awk ‘BEGIN{FS=":"}{print $1 “\t” $3}’ /etc/passwd 对以:分割的文件提取第1列,第3列(因为awk是先读入一行数据,在按规则处理。所以需要添加BEGIN)
#cat student.txt | grep -v Name | awk ‘$4>=85{print $2}’ 输出分数不低于85的学生的姓名
字符处理命令
条件判断
两种格式:test [选项] 文件名 或者 [ [选项] 文件名 ]
上表中,比较常用的就是 -d -e -f 三个。
例如:#[-d /root ] && echo yes || echo no 判断root文件是否存在且为目录文件
例如:# [ -w student.txt ] && echo yes || echo no 判断student.txt文件是否有写权限
注意!:此时他不区分用户的身份,也就是说该文件的三个用户(所属者,所属组,其它)只要有一个用户具有写权限就为真。
判断字符串的操作是十分常用的。
注意:调用变量的时候最好加上双引号,例如:[ $name==“zzj” ]当name变量为空的时候就会报错:( [: ==: unary operator expected).
是因为name为空,它就变成了 [ == “zzj” ] 导致语法错误!而且两字符串比较的时候 == 和 !=两侧必须有空格!!!
流程控制
if语句
备份文件:
case语句
for循环
这种语法更适合在:in 后面为命令的执行结果情况。如批量解压lamp目录下的tar.gz压缩包:
while循环
until循环
和while循环相反,until循环是只要条件不成立就一直循环,直至条件成立。格式与while循环一样。
定时任务
crontab -e 编辑的固定格式:* * * * * command