Linux的shell基础

本文详细介绍了Linux中常用的命令行工具,如grep、cut、printf和awk的使用,以及正则表达式的应用。通过实例演示了如何匹配、提取和操作文本数据。同时,讲解了sed命令的行处理功能,包括打印、删除、替换等操作。最后,提到了shell脚本中的条件判断和循环结构,展示了它们在日常自动化任务中的强大能力。
摘要由CSDN通过智能技术生成

基础正则表达式

在这里插入图片描述
grep “a*” passwd
grep “aa*” passwd 最少包含一个字符,(一个字符也可以匹配,但是两个字符也是匹配一个字符,三个匹配两个)
在这里插入图片描述

1.2

“^” 匹配行首 “ $”匹配行尾
grep "n $ " passwd (结尾是n的行)
在这里插入图片描述
空白行grep -n “^ $” 1.txt
在这里插入图片描述

1.3

"[]"匹配中括号中指定的任意的字符,且只能匹配一个字符
grep “s[a-z]in” passwd
在这里插入图片描述
grep “[0-9]” passwd
在这里插入图片描述
grep “^ [a-z]” 1.txt(以小写字母开头的行)
在这里插入图片描述

1.4

“[^]”匹配除中括号的字符以外的任意字符
grep “^ [ ^a-z]” 1.txt
在这里插入图片描述

1.5转义字符

grep “.$” /etc/passwd
匹配使用“.”结尾的行

grep “a{2}” 1.txt
匹配包含连续两个或多个数字的字符串
在这里插入图片描述
grep “[0-9]{3}” 1.txt
匹配包含连续的三个数字的字符串
在这里插入图片描述

“{n,}”表示其前面的字符出现不小于n次
grep “^ [0-9]{3,}[a-z]” 1.txt
在这里插入图片描述
“{n,m}”匹配其前面的字符至少出现n次,最多出现m次
grep “sb{1,3}i” /tmp/passwd
匹配再字母s和字母i之间有最少一个b,最多三个b
在这里插入图片描述

2字符截取命令

2.1cut字段提取命令

选项:-f : 列号 提取第几列
-d 分隔符:按照指定分隔符分割列(分隔符这里加不加双引号都可以)
cut -f 2 -d: /tmp/passwd
(必须要指定分隔符,不然机会变成提取整篇了)
在这里插入图片描述

cut -f 3,5 -d: /tmp/passwd
(还可以提取多列)
在这里插入图片描述

2.2printf命令

在这里插入图片描述
printf ‘%s’ $(cat 1.txt)
不调整输出格式
在这里插入图片描述
printf ‘%s\t %s\t%s\t\n’ $(cat 1.txt)
调整格式输出
在这里插入图片描述

2.3awk命令

在这里插入图片描述
截取文档中的某个段
head -n2 /tmp/passwd |awk -F ‘:’ ‘{printf $0"\n"}’ (-F是指定分隔符,print的动作要用{}括起来,,不然会报错)
在这里插入图片描述
2.匹配字符或字符串
awk ‘/roo/’ /tmp/passwd
在这里插入图片描述
和sed类似,不过还有更强大的匹配功能
awk -F ‘:’ ‘$1~/oo/’ /tmp/passwd
(这里的~就是匹配的意思)在这里插入图片描述
awk -F ‘:’ ‘/root/ {printf $1,3} /bash/ {printf $1,3}’ /tmp/passwd
在这里插入图片描述
条件操作符
awk -F ‘:’ ‘$3==“0”’ /tmp/passwd
在这里插入图片描述
awk -F’:’ ‘$7!="/sbin/nologin"’ /tmp/passwd(!=为不匹配)
在这里插入图片描述
awk -F’:’ ‘$3<$4’ /tmp/passwd在这里插入图片描述
awk -F’:’ ‘$3>$4’ /tmp/passwd在这里插入图片描述
另外还可以使用 && 和 || 表示“并且” 和“或者” 的意思
awk -F’:’ ‘$3>“5”&& $3<“7”’ /tmp/passwd
在这里插入图片描述
也可以是或者
awk -F’:’ ‘$3>“5”|| $7=="/bin/bash"’ /tmp/passwd
在这里插入图片描述
4.awk的内置变量
awk常用的变量
NF:用分隔符分隔后一共有多少段
NR:行数
在这里插入图片描述
$NF是最后一段的值;
NR则是行号
在这里插入图片描述
可以使用行号作为判断条件,也可以配合匹配一起使用:在这里插入图片描述
5.awk中的数学运算
段值更改:在这里插入图片描述

awk还可以对各个段的值进行数学运算:
在这里插入图片描述

3sed命令

3.1打印某行(想把所有行都打印出来可以使用 sed -n '1,$'p 文件绝对路径)
在这里插入图片描述
3.2打印包含某个字符串的行
在这里插入图片描述
grep中使用的特殊字符,如 ^ $ . * 等同样也能在sed中使用
在这里插入图片描述
-e可以实现多个行为在这里插入图片描述
3.3删除某行或多行(d是删除动作)但不修改文件
在这里插入图片描述
3.4替换字符或字符串
3.4.1在这里插入图片描述
#号也可以当作分隔符
在这里插入图片描述
3.4.2删除文档中的所有数字或者字母
在这里插入图片描述
3.5调换两个字符串的位置
在这里插入图片描述
再某行后追加‘字符’
在这里插入图片描述
再某行插入两行数据
在这里插入图片描述
替换字符串
sed ‘3s///g’ 文件名
在这里插入图片描述
-i 直接写入文件
在这里插入图片描述
-e同时(替换为空)
在这里插入图片描述

4.条件判断

3.1按照文件类型判断
在这里插入图片描述
两种判断格式在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.2按照文件权限判断

在这里插入图片描述
在这里插入图片描述

3.3两个文件之间的比较

在这里插入图片描述
例:创建硬连接
在这里插入图片描述

test比较
在这里插入图片描述

3.4整数进行比较

在这里插入图片描述
例:在这里插入图片描述

3.5字符串的判断

在这里插入图片描述
例1:在这里插入图片描述
例2:在这里插入图片描述

3.6多重条件判断

在这里插入图片描述
例:在这里插入图片描述

5.流程控制if条件语句

5.1单分支 if 条件语句
在这里插入图片描述
单分支条件语句需要注意几个点: if 语句使用 fi 结尾,和一般语言使用大括号结尾不同
例:写一个检测内存运行的脚本在这里插入图片描述

5.2双分支

例2(shell脚本)备份数据库在这里插入图片描述
在这里插入图片描述

5.3case语句

case 语句和 if…elif…else 语句一样都是多分支条件语句,不过和 if 多分支条件语句不同的是,case 语句只能判断一种条件关系,而 if 语句可以判断多种条件关系。 在这里插入图片描述
例:在这里插入图片描述
在这里插入图片描述

5.4For循环

在这里插入图片描述
例一(打印时间)
在这里插入图片描述
在这里插入图片描述
例2批量解压缩脚本
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
例题1
从1加到100
在这里插入图片描述
在这里插入图片描述
例2:(这里不要粗心大意,不能少少任何标点符号,不然会报错)
在这里插入图片描述
在这里插入图片描述

5.5while

示例(1加到100)在这里插入图片描述
在这里插入图片描述

5.6until循环

until 循环,和 while 循环相反,until 循环时只要条件判断式不成立则进行循环,并执行循环程序。一旦循环条件成立,则终止循环。
在这里插入图片描述
示例(1加到100)在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值