Linux 三剑客+正则表达式

基本正则表达式

在这里插入图片描述

扩展正则表达式

在这里插入图片描述

grep 使用

在这里插入图片描述
在这里插入图片描述

查找包含 ‘root’ 的行显示行号

grep -i 'root' pwd.txt -n 

查找包含 ‘root’ 的行统计行数

grep -i 'root' pwd.txt -c

查找空行显示行数

 grep '^$' test.txt -n

查找非空行显示行数

 grep '^$' test.txt -n -v

查找排除 #开头 的非空行

grep '^#' test.txt -v | grep '^$' -v

查找 .结尾 的行

grep '\.$' test.tx

匹配 包含5 字符,只有两位数

 grep '.5' test.txt 

匹配到 f 的字符,不管前面有什么

grep '.*f' test.txt 

按照条件匹配字符

grep '[a-z0-5]' test.txt 

按照条件排除字符

grep '[^a-z]' test.txt

sed 使用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

打印文件的2、3行内容

sed '2,3p' pwd.txt -n

打印包含“lp”的行

sed '/lp/p' pwd.txt -n

删除包含“daemon”的行并写入文件中

sed '/daemon/d' pwd.txt -i

删除1~5行并写入文件中

sed '1,5d' pwd.txt -i

删除10到最后一行并写入文件中

sed '10,$d' pwd.txt -i

将 dbus 替换成 abcd 并写入文件

sed 's/dbus/abcd/g' pwd.txt -i

将 abcd替换成 1234,nologin 替换成 123456 并写入文件

sed -e 's/abcd/1234/g' -e 's/nologin/123456/g' pwd.txt -i

在指定行后面(2a 第二行后)插入内容并写入文件

sed '2a 12345' pwd.txt -i

在指定行前面(10i 第十行前)插入内容并写入文件

sed '10i 12345' pwd.txt -i

换行符\n,同时插入asdfghj、nasdfghj多行内容

sed '2a asdfghj\nasdfghj' pwd.txt -i

在每行后插入指定内容,a 不加数字

sed 'a ---------' pwd.txt -i

提取 ip 地址

# 找指定行,删除开头和结尾的内容
ip addr | sed '/101/p' -n | sed 's/^.*brd //g' | sed 's/ scope.*$//g'

# 使用 -e 参数多次匹配
ip address show ens33 | sed -e '3s/^.*inet //' -e '3s/ brd.*$//p' -n

awk 使用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

打印指定列

# 列出所有列
awk '{print $0}' docker.txt 
awk '{print}' docker.txt 
# 列出第一列
awk '{print $1}' docker.txt
# 列出倒数第二列
awk '{print $(NF-1)}' docker.txt
# 列出最后一列
awk '{print $(NF)}' docker.txt 

打印多列

awk '{print $1,$2,$3}' docker.txt

打印自定义列

awk '{print "第一列:"$1,"第二列:"$2,"第三列:"$3}' docker.txt

打印指定行或多行

# 打印第五行
awk 'NR==5{print $0}' docker.txt
# 打印五~七行
awk 'NR==5,NR==7{print $0}' docker.txt 
awk 'NR==5,NR==7' docker.txt 

打印行号

# 打印所有行行号
awk '{print NR,$0}' docker.txt
# 打印5~7行行号
awk 'NR==5,NR==7{print NR,$0}' docker.txt 

打印第一行,倒数第二行,倒数第三行

awk '{print $1,$(NF-1),$(NF-2)}' docker.txt

提取 ip 地址

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

指定输入分割符

awk -F ":" '{print $1,$NF}' pwd.txt 
awk -v FS=":" '{print $1,$NF}' pwd.txt 

指定输出分割符

awk -v FS=":" -v OFS=">>>>" '{print $1,$NF}' pwd.txt
awk -v FS=":" '{print $1,">>>>>",$NF}' pwd.txt
awk -v FS=":" -v OFS="\t" '{print $1,$NF}' pwd.txt

内置变量使用

# NR 打印行数,NF 打印字段数
awk -v FS=":" '{print NR,NF,$1}' pwd.txt

分开打印多个文件的行号

awk -v FS=":" '{print FNR,$1}' pwd.txt gr.txt

指定换行符

awk -v RS=":" '{print NR,$0}' pwd.txt

指定每行结尾输出内容

awk -v ORS="########" '{print NR,$0}' pwd.txt

FILENAME 变量使用

awk '{print FILENAME,$0}' pwd.txt

格式化输出打印

awk '{printf $0}' test.txt

处理文件之前执行动作

# 先打印"自我介绍开始:",在处理文本
awk 'BEGIN{print "自我介绍开始:"} {printf $0}' test.txt

处理文件之后执行动作

# 先处理文本,在打印"自我介绍完毕"
awk '{printf $0} END{print "自我介绍完毕"}' test.txt

连在一起的执行效果

awk 'BEGIN{print "自我介绍开始:"} {print $0} END{print "自我介绍完毕。"}' test.txt 

在这里插入图片描述

格式化输出表格

awk -F ":" 'BEGIN{printf "%-25s\t %-25s\t %-25s\t %-25s\t %-25s\t %-25s\t %s\n","用户名","密码","UID","GID","用户注释","用户家目录","用户使用的注释器"} {printf "%-25s\t %-25s\t %-25s\t %-25s\t %-25s\t %-25s\t %s\n",$1,$2,$3,$4,$5,$6,$7}' pwd.txt

效果:
在这里插入图片描述

正则匹配

# 打印以 /sbin/nologin 结尾的内容
awk '/\/sbin\/nologin$/{print NR,$0}' /tmp/pwd.txt

# 区间匹配以指定字符开头的内容
awk '/^lp/,/^ftp/{print NR,$0}' pwd.txt

实战演练

awk 统计 nginx 的访问 ip

awk '{print $1}' access.log |sort -n |uniq |wc -l

# 注释:
sort -n 排序
uniq    去重
wc -l   统计行数

awk 列出 nginx 访问频率最高的 10 位访客

awk '{print $1}' log.txt |sort -n |uniq -c |sort -nr |head -10

# 注释:
sort -n   排序
uniq -c   去重并显示出现次数
sort -nr  根据数值大小反向排序
head -10  显示前10行
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux三剑客是指grep、awk和sed这三个工具。它们在Linux系统中广泛应用于文本处理和数据分析等任务。正则表达式则是一种用于匹配和处理字符串的强大工具,也是三剑客工具中常用的功能之一。 首先,正则表达式是一种用来描述文本模式的字符序列。它可以用来进行字符串的匹配、查找和替换等操作。在Linux系统中,grep是最常用的正则表达式工具之一。它可以用来在文件中搜索匹配某个模式的行,并将其输出。例如,我们可以使用grep来搜索包含特定关键词的行。 其次,sed是一个强大的流式文本编辑器。它可以根据正则表达式对文本进行编辑和转换操作。可以使用sed命令来删除、替换、插入和移动文本等。例如,我们可以使用sed来替换文件中的某个模式。 最后,awk是一种用于处理和分析文本数据的编程语言。它可以根据指定的规则从文本中提取数据,并进行各种计算和操作。awk使用起来相对复杂一些,但非常强大。可以用它来解析结构化数据、计算统计信息等。例如,我们可以使用awk来提取文件中的某些列或计算某些统计指标。 综上所述,Linux三剑客中的grep、awk和sed都是基于正则表达式的工具,它们可以帮助我们高效地处理和分析文本数据。正则表达式的灵活性和强大功能使得三剑客工具在日常工作中得到广泛应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值