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 1
sort为排序
-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=true
username: root
password: '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}'
与查询
awk 'NR>=1&&NR<=5&&/(root|daemon)/' /etc/passwd
awk -F':' 'NR>=1&&NR<=5&&/(root|daemon)/{print $0,$1}' /etc/passwd
[root@publish1 yfbkf]# echo 1234 | passwd --stdin yukw
更改用户 yukw 的密码 。
passwd:所有的身份验证令牌已经成功更新。
其他学习地址: