awk和sed的使用

正则表达式:匹配的是文章中的字符

通配符:匹配的是文件名

通配符中的元字符:不表示本来的含义 ?:任意单个字符  在正则表达式中有特殊含义的字符

正则表达式:元字符的使用   自己写容易,读取别人的正则难

正则表达式:

1.代表字符

. 单个任意字符

[ ]单个字符 如果方框里写abc 匹配a或b或c

2.表示次数

*代表前面的字符出现0到正无穷次

.*代表任意长度字符

\? 0 或1次 可以有也可以无

\+ 1次到正无穷次

\{3} 前面的 字符出现3次 、{}

3.位置锚定 ^  $

\b 字符串的开头\<

\b字符串的结尾\>

4.分组或其他

分组 ()使用括号将需要组合的字符括起来

awk

一种程序语言   文本处理工具

awk 文本处理工具:

假设文件有一万行,加载一行处理一行

vim 文本处理工具,内存不足打不开超级大的文件,把整个文件加载到内存中处理,如果内存过大无法打开处理文件

awk 选项 ‘表达式{处理动作}’

选项:

-F 指定分隔符

-v 指定变量

表达式(program):awk的语言的表达式

  1. 不写等于没有
  2. 找到特定的行

常见的内建变量


FS∶ 列分割符。指定每行文本的字段分隔符,默认为空格或制表位。与"-F"作用相同

NF∶ 当前处理的行的字段个数。

NR∶ 当前处理的行的行号(序数)。

$0∶当前处理的行的整行内容。

$n∶ 当前处理行的第n个字段(第n列)。

FILENAME∶ 被处理的文件名。

RS∶ 行分隔符。awk从文件上读取资料时,将根据RS的定义把资料切割成许多条记录,而awk一次仅读入一条记录,以进行处理。预设值是’\n’

$NF:最后一段

$(NF-1):倒数第二段

处理动作

print打印  printf打印

awk内置变量

$0全文

$1第一列

$2第二列

$n第n列

NF字段的个数 倒数第一列 $NF 倒数第二列 $(NF-1)

NR显示行号

awk ‘{print $1}’

awk内置变量和shell环境中的变量会有冲突 ‘{}’


从几点几分到几点几分的日志

awk ‘/ /,/ /’

统计/etc/fstab真正单词个数

提取df的cpu占用

提取stat /tmp/

提取ip地址

ifconfig ens33 |awk 'NR==2{print $2}'

打印/etc/passwd的所有用户名

cat /etc/passwd|awk -F":" '{print $1}'
或
cat /etc/passwd|awk -F: '{print $1}'

提取文本中的IP地址和时间 

##文本内容##
vim test.txt 
 
58.87.87.99 - - [09/Jun/2020:03:42:43 +0800] "POST /wp-cron.php?
doing_wp_cron=1591645363.2316548824310302734375 HTTP/1.1" ""sendfileon
128.14.209.154 - - [09/Jun/2020:03:42:43 +0800] "GET / HTTP/1.1" ""sendfileon
64.90.40.100 - - [09/Jun/2020:03:43:11 +0800] "GET /wp-login.php HTTP/1.1" ""sendfileo
 
 
##提取##
cat test.txt |sed '2d'|awk -F"[[ ]"  '{print $5"\t"$1}'

 sed

 sed是什么?

- sed编辑器时一种流编辑器,流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。
- sed编辑器可以根据命令来处理数据流中的数据,这些命令**要么从命令行中输入,要存储在一个命令文本文件中。

sed的命令格式

第一种:
sed -e '操作' 文件1 文件2
 
第二种:
sed -n -e '操作' 文件1 文件2 
 
第三种:
sed -f 脚本文件 文件1 文件2 
 
第四种:
sed -i -e '操作' 文件1 文件2

sed ‘ 语法 ’

sed自己的语法

语法:

范围+操作  打印屏幕上

输出哪些行,留下哪些

sed ‘ ’

命令的选项  sed后跟的选项

sed -n 关闭自动打印   不关会打印两次

sed -r 启用扩展正则

sed -I 实际修改文件的内容

语法字母在单引号中 ‘’ p手动打印

q提前退出  3q 打印到第三行退出

d 删除 3d删除第三行

sed再不打开文件的情况下修改文件内容

a 在内容后插入 3a第三行后面追加  

i在内容前插入  3i 第三行上面添加

c 替换 3c 将第三行整行替换

=显示行号

提取/etc/passwd的第三行

提取14点10分到15点20分的日志

提取前三行数字

在第三行下插入hehe

在第三行下插入hehe和haha

搜索替代

范围 s/旧字符/新字符/修饰符

替换标记:

  • 数字:表明新字符串将替换第几处匹配的地方
  • g 表明新字符串将会替换所有匹配的地方
  • p 打印与替换命令匹配的行,与 -n 一起使用
  • w 文件 :将替换的结果写到文件中

修改全局后面加g

sed -i 's/root/admin/g' /etc/passwd
#将全局root修改为admin

替换行内容 

sed -i '2cth' text
#将第二行的内容替换为th

取反 使用感叹号

seq 10|sed -n '2!p'
#不显示第二行

修改selinux开机不自启配置文件

sed -i 's/SELINUX=enforcing/SELINUX=disabled' /etc/selinux/config

提取ip地址

ifconfig ens33 |sed -rn '2s/.*(inet)([0-9.]+) (netmask) ([0-9.]+) (broadcast) ([0-9.]+).*/\2/p'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值