grep,sed,awk学习简记

grep 过滤

grep -E  支持正则

grep -A  after 几行

grep -B  before 几行

grep -C  上下多显示几行

grep  -c 统计出现多少行,类似wc -l 

grep -v 取反,排除

grep -n 显示行号

grep -i  忽略大小写
sed 替换,修改文件内容,取行



s 替换

替换格式

s###g

s@@@g

s///g



p 显示print   

 '1p' 行号

 '1,5p' 范围

 '/正则/p'  类似grep过滤 //可以写正则

 '/10:00/,/11:00/p'   表示范围的过滤

 '1,/正则/p'  混合



d 删除delete



cai 增加c/a/i

c  replace替代这行的内容

a append 追加

i  insert插入



sed -r '/$^|#/d' /etc/sshd/sshd_config

sed -r '/$^|#/!d' /etc/sshd/sshd_config(!不删除)
awk 取列,统计计算  

#条件{动作}

行  记录record   每一行默认通过回车分割的

NR==1

NR>=1 && NR<=5

符号    > < >= <= !=

//

/101/,/105/



列   字段,域 field   每一列默认通过空格分割

-F 指定分隔符

$数字  取出某一列

$0 整行内容

{print  xxx}

$NF 表示最后一列



awk内置变量

NR  记录行号

NF 列,记录每行有多少字段

FS  -F:  字段分隔符,每个字段结束标记

OFS   输出字段分隔符(awk显示每一列以什么分隔,默认空格)
### 基础正则

^  以...开头

$  以....结尾

^$ 空行

.(点) 任意一个字符

\ 转义字符

*前一个字符出现0次或者0次以上

.* 所有内容,任何内容,任意内容

[] 一次匹配一个字符,匹配任意一个字符

[^] 取反



### 扩展正则

+前一个字符出现一次或者一次以上

| 或者

()分组  被括起来的内容,表示一个整体(一个字符),反向引用sed

{} 前一个字符连续出现的次数

? 连续出现,前一个字符出现0次或者1次
ip a s ens192 | sed -rn '3s#^.*t (.*)/.*$#\1#gp'

stat /etc/hosts | sed -rn '4s#.*\(0([0-9]{1,})/-.*$#\1#gp'

ls -l |awk '{print $5,$9}' | column -t

ip a s ens192   | awk -F '[ /]+' 'NR==3{print $3}'

awk '/2021:03:42:21/,/2021:04:34:01/{print $1,$4,$6}' access.log | awk -F'[' '{print $1,$2}' | column -t | sort -n | uniq

awk '/^$/{i++}END{print i}' /etc/services

seq 100 | awk 'BEGIN {print "1+100的和:"}{sum=sum+$1;print sum}END{print sum}'

awk 'BEGIN{a[0]="oldboy";a[1]=12306;print a[0],a[1]}'

awk 'BEGIN{a[0]="oldboy";a[1]=12306;a[2]="hahaha";a[3]="@@@"; for(i in a) print i,a[i] }'

awk -F '[/.-]+' '{array[$3]++}END{for(i in array) print i,array[i] }' c.txt

awk -F '[/.-]+' '{array[$3]++}END{for(i in array) print i,array[i] }' c.txt | sort -rnk2

awk '$10~/[0-9]+/{a[$10]++}END{for (i in a)print i,a[i]}' access.log | sort -rnk2

awk 'BEGIN{for (i=1;i<=100;i++)sum+=i;print sum}'

df -Th | awk -F'[ %]+' '$6~"[0-9]+"{if($6>=10) print"disk not enough",$6"%",$7}'

echo i am oldboy teacher welcome to oldboy training class . | awk -F '[ .]' '{for(i=1;i<=NF;i++) if(length($i)<6) print $i}'
上一篇:ORB-SLAM3单目+IMU初始化流程梳理


下一篇:ROS与Vrep