Sed、Awk实用正则替换
1、cat application-test.properties
spring.datasource.ip.map.driverClassName=com.mysql.jdbc.Driver
spring.datasource.ip.map.url=jdbc:mysql://192.168.12.22:3306/test?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&zeroDateTimeBehavior=convertToNull
spring.datasource.ip.map.username=root
spring.datasource.ip.map.password=123456
需要将文件中这行
spring.datasource.ip.map.url=jdbc:mysql://10.2.11.22:3306/test?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&zeroDateTimeBehavior=convertToNull
替换为
spring.datasource.ip.map.url=jdbc:mysql://10.5.45.134:3306/yukw?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&zeroDateTimeBehavior=convertToNull
sed替换语句
sed -i '/spring.datasource.url/s/[0-9]\{1,3\}.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}:[0-9]\{1,4\}\/.*?/10.5.45.134:3306\/yukw?/g' application-production.properties
2、cat database.php
................... 略 .......................return [
// 数据库类型
'type' => 'mysql',
// 服务器地址
'hostname' => '192.168.35.101',
// 数据库名
'database' => 'wxfat',
// 用户名
'username' => 'wxfat',
// 密码
'password' => 'test_wxfat',
// 端口
'hostport' => '3306',
// 连接dsn
'dsn' => '',................... 略 .......................
将文件中 database对应的用户名 wxfat 修改为 yukw
$ sed -rn "s#('database'[ ]*=>)(.*$)#\1 'yukw',#gp" database.php
'database' => 'yukw',
3、awk
简写 | 实际 | 功能 |
i++ | i=i+1 | 统计次数,计数 |
sum=sum+?? | sum+=??? | 求和,累加 |
需求:
1、统计aa.txt中 www.baidu.com、aa.baidu.com、bb.baidu.com三个域名分别出现的次数
分析:
2、实际上是统计www、aa、bb出现的次数
$ cat aa.txt
http://www.baidu.com/index.html
http://aa.baidu.com/index.html
http://www.baidu.com/index.html
http://www.baidu.com/index.html
http://aa.baidu.com/index.html
http://www.baidu.com/index.html
http://bb.baidu.com/index.html
$ awk -F'[/.]+' '{array[$2]++}END{for (i in array) print i,array[i]}' aa.txt | sort -rnk2
www 4
aa 2
bb 1sort为排序
-r 倒叙 n根据数字 -k2 表述根据第二列
awk的 for (i in array) 这种循环模式只用于数组,还有另外一种循环模式,在第四种可以看到
for(i=1;i<101;i++)
## array[ ]++ 你要统计什么 [ ]里面就是什么(某一列)
## 比如统计nginx access.log中ip出现的次数,就是 array[$1]++
四、求和
$ awk 'BEGIN{for(i=1;i<101;i++) sum+=i;print sum}'
5050
注意:awk使用多个条件的时候,第1个条件可以放在 '条件{动作}' 第二个条件 一般使用if
五、替换匹配行的下一行
处理办法:
先匹配到 NsyConfig行,然后替换下一行的内容
sed -i '/NsyConfig/{n;s/"Domain".*$/"Domain": "https:\/\/www.baidu.com",/g;}' applicationconfig.json## 自己研究的
[root@ZS-Jenkins02 resources]# sed -rn '/master/,+3p' application-test.yml master:url: jdbc:mysql://127.0.0.1:3306/education?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=trueusername: rootpassword: 'we@tencent'
[root@ZS-Jenkins02 resources]# sed -rn '/master/,+3s/username.*$/username: root/p' application-test.yml username: root
[root@ZS-Jenkins02 resources]# sed -rn '/master/,+3s/password.*$/password: yukw.com/p' application-test.yml password: yukw.com
六、竖线 |
竖线在中括号[]中没有 或 的意思,在小括号()中有
七、对日志常用的统计、求和、判断
查询mongodb日志 时间大于3000ms的语句
awk '$NF~/ms$/{print $NF, $0}' shard32.log | awk -F'm' '{if($1 > 3000) print $0}'$ awk '$NF~/ms$/{print $NF, $0}' shard32.log | awk -F'm' '{if($1 > 5000) print $0}' | wc -l
53$ awk '$NF~/ms$/{print $NF, $0}' shard32.log | awk -F'm' '{if($1 > 5000) print $0}' | sed -n '$='
53统计nginx访问流量,利用awk求和
awk '{sum+=$10}END{print sum}' access.log统计nginx访问日志中 每个ip的访问次数
awk '{array[$1]++}END{for(i in array)print i,array[i]}' access.log | sort -rnk2统计nginx访问日志中 每个ip的访问次数,再加上过滤条件
awk '$1~/^103/{array[$1]++}END{for(i in array)print i,array[i]}' access.log | sort -rnk2 | column -t
八、查看长度小于6的单词
# echo "i am oldboy teacher welcome to oldboy training class." | awk -F'[. ]+' '{for(i=1;i<=NF;i++)print $i}'
i
am
oldboy
teacher
welcome
to
oldboy
training
class# echo "i am oldboy teacher welcome to oldboy training class." | awk -F'[. ]+' '{for(i=1;i<=NF;i++)if (length($i)<6) print $i}'
i
am
to
class
附加知识:
cat -A 显示文件中隐藏的标记
grep -o 显示匹配过程2) 你可认知[]?[]里面的内容去掉特殊含义[a-z|A-Z|0-9] 匹配大小写字母和数字,匹配 |[^abc] 取反,排除 排除a或b或c的内容,匹配a或b或c之外的内容
取IP
# ip a s eth0 | sed -n '3p' | sed -r 's#(.*t )(.*)(/.*)#\2#g'
精简 # ip a s eth0 | sed -rn '3s#(.*t )(.*)(/.*)#\2#gp'
# ip a s eth0 | awk -F'[ /]+' 'NR==3{print $3}'
其他学习地址:
sed 之 & 符号 - LiuYanYGZ - 博客园
Sed、Awk实用正则替换相关推荐
- 三剑客grep sed awk
三剑客 正则(RE)表达式 应用场景 规则 注意事项 正则符号 基础正则 扩展正则 正则实例 正则 VS 通配符 三剑客 grep sed sed核心应用 awk awk执行过程 内置变量 awk 正 ...
- awk,sed,grep运用正则与扩展正则
1.正则与扩展正则的概述 2.示例 grep 过滤工具 ---格式:grep [选项] "正则表达式" 文件 egrep 过滤工具 ---格式:egrep [选项] "扩 ...
- linux三剑客及正则表达(grep,sed,awk)
首先我们现在知道Linux下一切皆文件,对Linux的操作就是对文件的处理,那么怎么能更好的处理文件呢?这就要用到我们上面的三剑客命令. 在说这三个命令前我们要插入一个小插曲就是"正则表达式 ...
- php正则过滤%3e,实用的替换或者过滤数据正则表达式php代码
实用的替换或者过滤数据正则表达式php代码 蓝叶 网站设计 2021-02-01 137 0评论 通过php代码来实现一些功能时或通过php代码来实现采集数据时,采集到的数据或 ...
- Shell ❀ 三剑客 - Grep + Sed + Awk
文章目录 八.三剑客 - Grep + Sed + Awk 1.Grep - 过滤 1.1 常用grep参数 1.2 使用方法 2.Sed - 行匹配 2.1 执行原理 2.2 常见语法 2.3 使用 ...
- Linux 正则表达式 流编辑之sed awk
一. 命令行中的正则特殊符号 1 [:alnum:]等价于a-zA-Z 0-9 2 [:alpha:]等价于a-zA-Z 3 [:digit:]等价于0-9 4 [:lower:]等价于a-z 5 ...
- linux下查找文件及文件内查找内容--find/grep/sed/awk
1.find 查找到想要的文件或目录 格式:find [path] [-OPTION] [-exec |grep |xargs -ok -print | --] [comman ...
- Linux三剑客命令详解(grep sed awk )
下面所说的是Linux中最重要的三个命令在业界被称为"三剑客",它们是awk,sed,grep. 我们现在知道Linux下一切皆文件,对Linux的操作就是对文件的处理,那么怎么能 ...
- sed awk 笔记(二)
都说sed awk 运维人员的必备工具.今天起开始整理相关笔记.首先认识一下这两个东西. 共性:使用相同的语法 [address]/pattern/action/flag 都是面向字符流的.从一个文件 ...
最新文章
- 面试不怂之redis与缓存大全
- (POJ 3026) Borg Maze 最小生成树+bfs
- 终于来热风了,又一次感觉到什么叫温暖!
- 裂变实操:1个模型+4个步骤,教你打造流量的自循环系统
- android显示服务器端文件夹,Android上传文件到服务端并显示进度条
- 培训机构还能不能信任?
- 蓝桥杯 ADV-181 算法提高 质因数2
- 推荐 一个PDF转Word内容不匹配、乱码的解决方法
- PMBOK2008中的三种沟通方式(草稿版)
- 在ubuntu用audacity把音频转换成256kbps,单声道。(亲测有效)
- DBveaver的一些使用心得
- 怎么学习英文--英国人教你如何学习英文
- 林轩田机器学习技法(Machine Learning Techniques)笔记(一)
- 西雅图又一家科技公司准备上市!
- 有效 360 度反馈系统的关键
- TransUNet阅读笔记与训练尝试
- [蛋蛋涂鸦]沪江小D清新桌面壁纸
- Java项目—健身房管理系统(附源码+文档)
- 微信小程序—本地存储
- Winform控件开发(15)——contextMenuStrip(史上最全)
热门文章
- [230]连接Redis后执行命令错误 MISCONF Redis is configured to save RDB snapshots
- 详解MySQL字符串函数TRIM()、填充函数LPAD()、RPAD()、字符串长度LENGTH()用法(三)
- 第三十届ACM国际大学生程序设计竞赛全程采访 - 赴美首日
- 特征共线性与神经网络
- python绘制柱状图设置间隔时间,Python数据可视化:5种绘制柱状图表的方法(附源码)...
- 【信息技术】【2007】遮挡与杂乱环境中的车辆跟踪研究
- 大数据运维--Linux安装java
- nvidia frameview sdk有什么用_继续耍猴!NVIDIA承认芯片短缺,显卡缺货涨价要维持数月...
- 蝙蝠侠中的oracle,蝙蝠侠为什么叫老爷 看看他的身价就知道了
- 安卓TextView 文字方向 水平朝左