Linux文本处理

2018-08-06  本文已影响0人  朽木1313

技术点:

1.正则提取

sed 用提取变量替换
sed 's/.*toid\=\([0-9]*\).*/\1/g'

2.查找系统占内存最高的10个程序

按照实际物理内存排序:ps aux --sort=-rss 支持 sort 参数,sort 参数 + 表示正序,-表示倒叙 ps aux --sort=-rss,-%cpu 表示先按物理内存再按cpu排列

3.查找系统内各程序占内存最高10个

上面只能看到各个进程的排序,但有时候一个程序可能启动数十个进程,这样子分析起来比较慢了。这里可以先按照 awk程序做过滤后排序输出,sort记得加上 n 参数表示按照数字而不是字符串排序

ps -aux | awk 'NR!=1{a[$11]+=$5;} END {for(item in a) print item " " a[item];}' | sort -rnk2 | head -n 10

4.批量kill进程

kill -9 $(ps -aux | grep 'node /usr/local/bin/pm2 l' | grep -v grep | awk '{print $2}')

附录:

一、sed命令简介

sed 是流文本编辑器,可以用来做流的替换、删除、匹配等操作。
sed简明教程

1. s参数替换
2. i参数回写修改流

一般 sed 只将数据修改输出,加上 i 参数可以将改动回写源文件

3. 指定替换范围

s参数前面数字可指定替换行范围
1,s/pattern//g, 1,2s/pattern//g, ,2s/pattern//g

4.圆括号

patter段里面由括号括起来的正则表达式匹配内容可以当成变量使用,引用方式: \1 \2 \3

此外还有i a d P N参数

二、awk命令简介

AWK命令非常强大,用来做数据统计,不需要写编程脚本,可能awk一行命令就搞定了。

AWK简明教程

1.内建变量

在写脚本时可以使用一些程序级变量

变量名 含义
$0 整行
1 -n 分割后各段的引用
NF 切割后字段数
NR 当前行号,处理的第几行
FS 使用分割符,默认为 tab
RS 记录分割符,默认为换行符
1.过滤匹配行

示例:awk '$6 !~ /WAIT/ || NR==1 {print NR,$4,$5,$6}' OFS="\t" netstat.txt

2.拆分文件

有点像mysql的group,要根据第6列不同的数据值拆分文件
awk 'NR!=1{print > $6}' netstat.txt

3.数据统计

awk可以做累加、计数、求合、判断这些基本逻辑

上一篇 下一篇

猜你喜欢

热点阅读