Linux文本三剑客sed

2024-06-24 12:04
文章标签 linux 文本 三剑客 sed

本文主要是介绍Linux文本三剑客sed,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

sed和awk

grep就是查找文本当中的内容,最强大的功能就是使用扩展正则表达式

sed

sed是一种流编辑器,一次处理一行内容。

如果只是展示,会放在缓冲区(模式空间),展示结束后,会从模式空间把结果删除

一行行处理,处理完当前行,才会处理下一行。直到文件的末尾。

sed的命令格式和操作选项:

sed -e '操作符 ' -e '操作符' 文件1 文件2

-e表示可以跟多个操作符,只要有一个操作,-e可以省略

sed -e '操作符1;操作符2' 文件1 文件2

选项:

-e:用于执行多个命令

-f:在脚本当中定义好了操作符,然后根据脚本内容的操作符对文件进行操作

-i:直接修改目标文件(慎用)

-n:仅显示script处理后的结果(不加-n,sed会有2个输出结果,加了-n之后就会把默认输出屏蔽,只显示一个结果)

p:打印结果

r:扩展正则表达式

s:替换,替换字符串

c:替换,替换指定行

y:替换,替换单个字符,多个字符替换必须和替换内容的字符长度保持一致

d:删除,删除行

a:增加,在指定行的下面一行插入内容

i:增加,在指定行的上面一行插入内容

r:在行后增加文本内容

$a 在最后一行插入新的内容

$i 在倒数第二行插入新的内容

$r 读取其他文件的内容,然后插入到对象文件的最后一行。

打印功能

寻址打印:按照指定的行进行打印

sed -n '=;p' test.txt

打印第二行和第五行

sed -n '2p;$p' test1.sh

打印奇数行和偶数行

cat -n test1.sh | sed -n 'p;n'(奇)

cat -n test1.sh | sed -n 'n;p'(偶)

过滤并打印包含o的

sed -n '/o/p' test.txt

使用正则表达式对文本内容进行过滤

sed -n '/^root/p' /etc/passwd

从指定行开始,打印得一个已bash为结尾的尾行

sed -n '3,/bash$/p' test1.sh

面试题:

如何面交互删除文本内容,但是不删除文件

两种方法:
cat /dev/null > 文件名
sed -i 'd' test1.txt
删除文件内容,不删除文件
sed -i ‘d’ + 文件名 

sed的删除操作

sed -n '3d' test,txt删除第三行打印剩余的行

匹配字符串的方式删除行

s替换字符串

sed -n 's/root/test/p' /etc/passwd

替换所有的root

sed -n 's/root/test/gp' /etc/passwd

首字母变成大写

sed 's/[a-z]/\lu&/' test.txt

u& 转移首字母大写的特殊符号。\转义符。

整行替换

sed '/IPADDR/c IPADDR=192.168.233.100' /etc/sysconfig/network-scripts/ifcfg-ens33

c要写替换行的后面

单个字符替换

[root@test1 opt]# sed 'y/one/123/' test1.txt

使用sed对字符串和字符的位置进行互换

[root@test1 opt]# echo luoyuhao | sed -r 's/(luo)(yu)(hao)/\2\3\1/' yuhaoluo

[root@test1 opt]# echo 德州扑克搞着了 | sed -r 's/(.)(.)(.)(.)(.)(.)(.)/\5\6\7\1\2\3\4/' 搞着了德州扑克

[root@test1 opt]# cat test1.txt | sed -r 's/(.)-(.)(.jar)/\2/'

[root@test1 opt]# grep -E "[0-9]+." test1.txt

面试题:如何把版本号提取出来
ant-1.9.7.jar
ant-launcher-1.9.7.jar
antlr-2.7.7.jar
antlr-runtime-3.4.jar
aopalliance-1.0.jar
archaius-core-0.7.6.jar
asm-5.0.4.jar
aspectjweaver-1.9.5.jar
bcpkix-jdk15on-1.64.jar
bcprov-jdk15-1.46.jar
bcprov-jdk15on-1.64.jar
checker-compat-qual-2.5.5.jar


用grep来提取

grep -E "[0-9]+\." test2.txt
用sed提取

cat test2.txt | sed -r 's/(.*)-(.*)(\.jar)/\2/'
面试题:打印指定时间内的日志。
sed -n '/Jun 21 11:00:01/,/Jun 14:01:01/p' /var/log/messages

这篇关于Linux文本三剑客sed的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1090092

相关文章

Linux中SSH服务配置的全面指南

《Linux中SSH服务配置的全面指南》作为网络安全工程师,SSH(SecureShell)服务的安全配置是我们日常工作中不可忽视的重要环节,本文将从基础配置到高级安全加固,全面解析SSH服务的各项参... 目录概述基础配置详解端口与监听设置主机密钥配置认证机制强化禁用密码认证禁止root直接登录实现双因素

在Linux终端中统计非二进制文件行数的实现方法

《在Linux终端中统计非二进制文件行数的实现方法》在Linux系统中,有时需要统计非二进制文件(如CSV、TXT文件)的行数,而不希望手动打开文件进行查看,例如,在处理大型日志文件、数据文件时,了解... 目录在linux终端中统计非二进制文件的行数技术背景实现步骤1. 使用wc命令2. 使用grep命令

Linux如何快速检查服务器的硬件配置和性能指标

《Linux如何快速检查服务器的硬件配置和性能指标》在运维和开发工作中,我们经常需要快速检查Linux服务器的硬件配置和性能指标,本文将以CentOS为例,介绍如何通过命令行快速获取这些关键信息,... 目录引言一、查询CPU核心数编程(几C?)1. 使用 nproc(最简单)2. 使用 lscpu(详细信

linux重启命令有哪些? 7个实用的Linux系统重启命令汇总

《linux重启命令有哪些?7个实用的Linux系统重启命令汇总》Linux系统提供了多种重启命令,常用的包括shutdown-r、reboot、init6等,不同命令适用于不同场景,本文将详细... 在管理和维护 linux 服务器时,完成系统更新、故障排查或日常维护后,重启系统往往是必不可少的步骤。本文

Python中图片与PDF识别文本(OCR)的全面指南

《Python中图片与PDF识别文本(OCR)的全面指南》在数据爆炸时代,80%的企业数据以非结构化形式存在,其中PDF和图像是最主要的载体,本文将深入探索Python中OCR技术如何将这些数字纸张转... 目录一、OCR技术核心原理二、python图像识别四大工具库1. Pytesseract - 经典O

基于Linux的ffmpeg python的关键帧抽取

《基于Linux的ffmpegpython的关键帧抽取》本文主要介绍了基于Linux的ffmpegpython的关键帧抽取,实现以按帧或时间间隔抽取关键帧,文中通过示例代码介绍的非常详细,对大家的学... 目录1.FFmpeg的环境配置1) 创建一个虚拟环境envjavascript2) ffmpeg-py

苹果macOS 26 Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色

《苹果macOS26Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色》在整体系统设计方面,macOS26采用了全新的玻璃质感视觉风格,应用于Dock栏、应用图标以及桌面小部件等多个界面... 科技媒体 MACRumors 昨日(6 月 13 日)发布博文,报道称在 macOS 26 Tahoe 中

Linux脚本(shell)的使用方式

《Linux脚本(shell)的使用方式》:本文主要介绍Linux脚本(shell)的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录概述语法详解数学运算表达式Shell变量变量分类环境变量Shell内部变量自定义变量:定义、赋值自定义变量:引用、修改、删

Python实现精准提取 PDF中的文本,表格与图片

《Python实现精准提取PDF中的文本,表格与图片》在实际的系统开发中,处理PDF文件不仅限于读取整页文本,还有提取文档中的表格数据,图片或特定区域的内容,下面我们来看看如何使用Python实... 目录安装 python 库提取 PDF 文本内容:获取整页文本与指定区域内容获取页面上的所有文本内容获取

Linux链表操作方式

《Linux链表操作方式》:本文主要介绍Linux链表操作方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、链表基础概念与内核链表优势二、内核链表结构与宏解析三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势六、典型应用场景七、调试技巧与