shell脚本记录

[size=x-large]shell[/size]
[*] case语法

case "$1" in
start)
start;;
stop)
stop;;
*)
usage;;
esac


[*] 查看系统32位还是64位

$uname -m
x86_64

$arch
x86_64



[size=x-large]grep[/size]

[*] grep命令hang住的问题

$ sh --version
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.

# 这行命令会一直卡住,直到按下ctrl+c终止命令执行后才会输出grep的结果
$ grep "Full GC" gc.log | cut -d' ' -f11

# 可以通过cat + 管道的方式解决(需要注意如果文件特别大时,不适用cat命令)
$ cat gc.log | grep "Full GC" | cut -d' ' -f11


[*] 提取正则匹配的字段

# 文件内容
$ cat gc.log
27.427: [GC [PSYoungGen: 575772K->143524K(611072K)] 898332K->529514K(1079168K), 0.4843210 secs] [Times: user=0.87 sys=0.09, real=0.48 secs]
27.911: [Full GC [PSYoungGen: 143524K->0K(611072K)] [PSOldGen: 385990K->415894K(586240K)] 529514K->415894K(1197312K) [PSPermGen: 18180K->18180K(29824K)], 1.5263920 secs] [Times: user=1.50 sys=0.02, real=1.53 secs]

# 提取 real=xx secs 中间的 xx,也就是gc的时间
$ grep -Po "(?<=real\=).* (?=secs)" gc.log
0.48
1.53



[*] 查看log

cat x.log|grep -Eo "[a-zA-Z]*Exception" | sort | uniq -c | sort -nr



[size=x-large]sed[/size]
[*] 替换文件中的行

$ sed -i "s/<groups>.*<\/groups>/<groups>cat<\/groups>/g" pom.xml


[*] 添加行

# /a 表示在正则匹配结果行的下一行插入
sed -i '/\[mysqld\]/a\default-character-set=utf8' /etc/my.cnf

# /i 表示在正则匹配结果行的前一行插入
sed -i '/\[mysqld\]/i\default-character-set=utf8' /etc/my.cnf



[size=x-large]awk[/size]

[*] 基本的awk命令

$ awk 'BEGIN {FS=" "} {print $0} END {}' a.txt
# begin后面的{} 表示在awk命令最开始执行
# FS 表示分隔符
# 中间的{} 表示对每一行的处理
# end后面的{} 表示在最后执行


[*] 分析gc日志,提取时间

# 如果第2列 GC,提取第6列数据相加,最后输出
awk 'BEGIN {} {if ($2=="[GC") t+=$6} END { print t }' gc.log
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值