shell脚本——正则表达式

一、正则表达式
正则表达式是用来描述字符串排列和匹配模式的一种语法规则,是字符串的模式分割、匹配、查找和替换操作。
正则表达式是包含匹配,操作字符串,如grep,awd,sed,而通配符是完全匹配,如ls,find,cp
基础正则
正则的与通配符的不同,如正则表达式aa*,第二个a不起作用,意思是以a开头的,而通配符aa*的话是以aa开头

^$这个会匹配空白行

1这个表示以数字开头
[^0-9]这个表示除数字以外

如果要取消某个字符的定义,则用转义符 “\”

二、cut、awk、sed使用(主要功能)
创建用户useradd 删除用户userdel
grep是行命令,cut是列命令,cut默认制表符tab
df 查看系统分区的情况

cut 内存切取:df -h |tr -s " "|cut -d " " -f 1,3
tr -s " "将空格压缩为一个

printf 输出格式化
printf ‘输入格式’ 数据
printf ‘%s\t’ $(cat test6.txt)
管道 | :是数据流的操作 printf不支持这个

还有一个print命令,在一个字符默认加上换行;printf是用户定义,都要自己写的

awk ‘条件1{动作1},条件2{动作2}’文件名
条件(pattern):
一般使用关系表达式作为条件
动作(Action)
格式化输出
流程控制

df -h |awk '{printf $1 “\t” KaTeX parse error: Expected 'EOF', got '\n' at position 4: 2 "\̲n̲" }' 输出df中第一列和…n与位置变量的$n不同,这里表示第几列, 0 表 示 整 个 文 件 名 位 置 变 量 的 0表示整个文件名 位置变量的 0n表示传进来的变量
2、printf中的转义符要用“ ”,而不是单引号,原因是它外面已经有了

df -h|grep “/dev/sda1”|awk ‘{print $5 }’|cut -d “%” -f 1
内存中,名字有"/dev/sda1",截取它的第五列(不清楚为什么不行printf),截取%前的数据
awk默认是空格,插表符,如果要弄:的则需以下操作:
cat /etc/passwd|awk ‘BEGIN {FS=":"}{print $1}’ FS是内置变量符,替换掉
BEGIN在读取动作前执行

sed
sed 【选项】 ‘【动作】’ 文件名
【选项】:
-n:将后面有关操作数打印在屏幕上,若没有,则全部打印
-e:对允许输入命令进行多条sed编辑
-i:将结果修改原文件
【动作】:
a 追加 c一行替换 i插入 d删除 p打印 s字符替换

sed -n ‘2p’ test1
sed ‘2c hello world’ test1
sed -e ‘s/xy/hello/g;s/th/hello/g’ test1 唯一确认的,所以s前可以不用加入行号。

三、字符处理命令
sort、wc
1、排列命令 sort sort [选项] 文件名
【选项】 :-f 忽略大小写 -n 以数值排列,默认字符串
-r 取反排列,默认从小到大 -t 指定分隔符,默认制表符
-k n[,m] 排序范围从第n个字段开始到m个

2、统计命令wc wc 【选项】 文件名
【选项】 :-l 行数 -w单词数 -m字符数


  1. 0-9 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值