当前位置: 首页 > news >正文

Linux之文本三剑客

Linux之三剑客

Linux的三个命令,主要是用来处理文本,grep,sed,awk,处理日志的时候使用的非常多

1 grep

对文本的内容进行查找

1) 基础用法

语法
grep 选项 内容|正则表达式 文件选项:
-i  不区分大小写
-v  排除,反选
-n  显示行号
-c  统计个数查看文件里包含有的内容
[root@localhost opt]# grep 'root' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin查看内容不区分大小写
[root@localhost home]# grep -i 'root' a.txt 
root
ROOT查看内容不包含有root
[root@localhost home]# grep -v 'root' a.txt 
ROOT
asdsad
43543543
/'.;.'查询root显示行号
[root@localhost home]# grep -n 'root' a.txt 
1:root
6:root查看包含有root行的个数
[root@localhost home]# grep -c 'root' a.txt 
2

2) 正则表达式

  • 基础正则表达式
正则表达式作用
^以xxx开头
$以xxx结尾
^$匹配空行
.任意一个字符
\转义字符
*前面的字符出现0-n次
.*匹配所有字符
[]只能是[]里的字符中任意一个
[^]非[]里的字符
  • 拓展正则表达式

egrep ‘拓展正则’ 文件名

正则表达式作用
|
+前面的字符出现1-n次
?前面的字符出现0次或1次
()把括号里的内容整体匹配
{m,n}前面的字符至少出现m次,最多出现n次
  • perl正则

grep -P ‘perl正则’ 文件名

正则表达式作用
\d所有的数字
\s空白字符
\w数字字母_

案例

查看/etc/sysconfig/selinux里不包含空行和注释信息[root@localhost home]# egrep -v '^$|#' /etc/sysconfig/selinux 
SELINUX=disabled
SELINUXTYPE=targeted

2 sed

1) 概述

sed(Stream EDitor)是一个强大而简单的文本解析转换工具,可以读取文本,并根据指定的条件对文本内容进行编辑(删除、替换、添加、移动等),最后输出所有行或者仅输出处理的某些行。

2) 语法

sed 选项 操作 文件

3) 查看

查看所有内容
sed -n 'p' 文件名查看第3行内容
sed -n '3p' 文件名查看第3-5行内容
sed -n '3,5p' 文件名查看偶数行内容
sed -n 'n;p' 文件名查看奇数行内容
sed -n 'p;n' 文件名查看包含有root内容的行
sed -n '/root/p' 文件名查看包含有a至包含有b的所有内容行
sed -n '/a/,/b/p' 文件名

案例:查看tomcat日志中的2023年6月1日的日志

[root@localhost opt]# sed -n '/2023-06-15/p' logsp2p.log

4) 运行过程

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

5) 新增

a:往指定的行下追加内容

sed '3a 内容' 文件名 

c:往指定的行替换成新的内容

sed '3c 内容' 文件名 

i:往指定的行前插入内容

sed '3i 88 aaaaaaaaa' a.txt

如果想要修改源文件需要在选项使用-i

sed -i '3i 88 aaaaaaaaa' a.txt[root@localhost home]# cat a.txt 
1 asdsadsadsa
2 asdasdsafdg
88 aaaaaaaaa
3 trytuytuyt
4 jhlkjlklj
5 32r3r43t
6 gjuku
7 gjukiuk
8 kiulkiul
9 wdewfew

6) 删除

删除指定的行
[root@localhost home]# sed '3d' a.txt 
1 asdsadsadsa
2 asdasdsafdg
4 jhlkjlklj
5 32r3r43t
6 gjuku
7 gjukiuk
8 kiulkiul
9 wdewfew删除包含有内容的行
sed '/内容/d' 文件名[root@localhost home]# sed '/1/d' a.txt 
2 asdasdsafdg
3 trytuytuyt
4 jhlkjlklj
5 32r3r43t
6 gjuku
7 gjukiuk
8 kiulkiul
9 wdewfew[root@localhost home]# sed '/1/,/6/d' a.txt 
7 gjukiuk
8 kiulkiul
9 wdewfew

3 awk

取文本的行或列内容

语法

awk [-F '指定字符'] "{print 列|行}" 文件名
-F省略不写的时候.默认是以空白字符拆分取列
awk '{print $0}' a.txt   以空白字符拆分  取列
$0 所有的列
$1 取第一列
$2 取第二列
......
$NF 取最后一列
$(NF-1) 取倒数第二列取行
awk 'NR==行数' 文件名
NR 当前处理的行号取1-6行
awk 'NR>=1 && NR<=6' 文件名        
&&|| 或取行列
awk -F ':' '$3>=500{print$3}' 文件名awk -F ':' '{print $3}' /etc/passwd | awk '$0>=500'[root@localhost home]# awk -F ':' '$3>=500{print $3}' /etc/passwd
999
998注意:条件筛选时使用单引号

相关文章:

  • 基于单片机技术的按键扫描电路分析
  • 缠中说禅李彪08年“假死”具体原因探讨
  • $(this) 和 this 关键字在 jQuery 中有何不同?
  • centos7安装mqtt服务端
  • vue中数组出现__ob__: Observer属性,导致不能正确使用问题解决
  • 一个人的开发团队:前后端与调动AI
  • 怎样才能更好地保护个人账号的安全
  • Linux库概念及相关编程(动态库-静态库)
  • Kafka-服务端-网络层-源码流程
  • Flink ProcessFunction不同流异同及应用场景
  • SeekBar设置自定义thumb图片的时候显示不全问题
  • 马斯克宣布xAI将在8月份推出Grok-2大模型 预计年底推出Grok-3
  • Spring Boot 创建定时任务
  • 带安全启动—Ubuntu系统—手动安装Nvidia驱动
  • 三菱PLC 6行程序实现8电机顺序启动逆序停止
  • AngularJS指令开发(1)——参数详解
  • centos安装java运行环境jdk+tomcat
  • css布局,左右固定中间自适应实现
  • FineReport中如何实现自动滚屏效果
  • Java面向对象及其三大特征
  • Java知识点总结(JavaIO-打印流)
  • unity如何实现一个固定宽度的orthagraphic相机
  • Vue2.x学习三:事件处理生命周期钩子
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 从tcpdump抓包看TCP/IP协议
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 近期前端发展计划
  • 手写一个CommonJS打包工具(一)
  • 微信小程序--------语音识别(前端自己也能玩)
  • 我看到的前端
  • 携程小程序初体验
  • 再次简单明了总结flex布局,一看就懂...
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • k8s使用glusterfs实现动态持久化存储
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • ​Z时代时尚SUV新宠:起亚赛图斯值不值得年轻人买?
  • #pragam once 和 #ifndef 预编译头
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • ()、[]、{}、(())、[[]]命令替换
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (二)斐波那契Fabonacci函数
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (十一)图像的罗伯特梯度锐化
  • (已解决)什么是vue导航守卫
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • (转)http协议
  • (转)关于pipe()的详细解析
  • (转)项目管理杂谈-我所期望的新人
  • (转载)Linux网络编程入门
  • (转载)深入super,看Python如何解决钻石继承难题
  • .axf 转化 .bin文件 的方法