ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

grep,sed,awk学习简记

2021-09-30 19:04:55  阅读:141  来源: 互联网

标签:字符 grep sed awk print array


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}'

标签:字符,grep,sed,awk,print,array
来源: https://blog.csdn.net/weixin_49724150/article/details/120571257

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有