shell编程-字符截取与条件判断

  1. 正则表达式
    shell脚本的正则表达式和其他语言的正则表达式略有不同,基础的正则表达式如下
    shell编程-字符截取与条件判断_第1张图片
    后三个正则表达式略有不同。

cut命令

shell编程-字符截取与条件判断_第2张图片

测试文件student.txt
在这里插入图片描述
cut -f 2 student.txt 截取文件第二列的文件
在这里插入图片描述
指定分割符
cut -d “:” -f 1,3 /etc/passwd
shell编程-字符截取与条件判断_第3张图片
缺陷:
cut有个缺陷,对于student.txt文件各列之间是用tab键分割开的如果使用空格就无法使用cut命令
eg:
df -h | grep /dev/sda5 | cut -f 1 发现此时显示的是一样 没有显示列
在这里插入图片描述

printf 命令

shell编程-字符截取与条件判断_第4张图片
printf %s 1 2 3 4 5
在这里插入图片描述
printf的%s只能被引号包围住才能按照格式读取参数或者文件里面的内容
shell编程-字符截取与条件判断_第5张图片

awk命令 - 字符截取命令

shell编程-字符截取与条件判断_第6张图片
查看sad5盘符的使用率
在这里插入图片描述
awk ‘{printf $2 “\t” $5}’ 中间不加格式符的话数据会会紧挨在一起,还有使用print和printf的区别就是,print会自动将每一行的数据后面加上换行符。
在这里插入图片描述
BEGIN命令 在awk命令执行前执行的动作
执行awk命令前输出hello world
在这里插入图片描述
END命令 在awk所有命令执行后执行的动作
执行awk命令后输出命令执行完毕
shell编程-字符截取与条件判断_第7张图片
FS执行分割符
在linux上面查找使用/bin/bash脚本的普通用户,并显示用户名和UID
在这里插入图片描述
我们发现第一条记录没有处理,那时因为awk先读入一条记录再进行处理分割符
因此我们可以强制先执行第一条记录 在FS动作前加上BEGIN
在这里插入图片描述

sed 命令 数据流编辑器

sed是一种几乎在所有的unix平台的轻量级流编辑器,sed主要是用来将数据进行选取,替换,删除,新增的命令
shell编程-字符截取与条件判断_第8张图片
shell编程-字符截取与条件判断_第9张图片
显示student.txt文件的第二行
在这里插入图片描述
去掉文件部分内容
在这里插入图片描述
但是文件本身内容没有删除掉,支持从文件从拿出内容,处理一下显示到控制台。

替换内容
在这里插入图片描述
全部替换
在这里插入图片描述
多sed命令
在这里插入图片描述

sort 排序命令

shell编程-字符截取与条件判断_第10张图片
在/etc/passwd下将用户按照uid进行排序
shell编程-字符截取与条件判断_第11张图片
我们发现它并没有按照uid进行排序,实际上这样是按照第一个字母进行排序的,因此需要执行该数值为整数
shell编程-字符截取与条件判断_第12张图片
-k n[,m]的参数不写结束符的话,默认从第个参数到最后一个参数都进行比较。

test条件判断

  1. 按照文件类型进行判断
    判断语句1 .test 选项 文件
    test -d /root 判断/root文件是否存在 并且是否是目录
    test -e sofency.txt 判断文件是否存在
    test -f sofency.txt 判断文件是否存在,并且文件是否是普通文件
    判断语句2 .[空格选项 文件空格]
    [ -e /root ] true

  2. 按照文件权限进行判断
    shell编程-字符截取与条件判断_第13张图片
    形式:[ -r 文件 ]

  3. 两个文件之间进行比较
    shell编程-字符截取与条件判断_第14张图片
    形式:[ 文件1 -nt 文件2 ]

  4. 两个数值之间的比较
    shell编程-字符截取与条件判断_第15张图片

  5. 字符串的判断
    shell编程-字符截取与条件判断_第16张图片

  6. 多重判断
    shell编程-字符截取与条件判断_第17张图片

你可能感兴趣的:(shell)