Linux:Shell编辑之文本处理器(sed)

目录

绪论

1、sed的原理:读取 执行 显示 三个过程

2、sed 文本内容处理工具,文件过大怎么办?

3、sed的操作选项

3.1 常用选项

3.2 操作符

3.3 行号的范围打印

3.4 对包含指定字符串的内容进行打印

3.5 删

3.5.1 正则表达式删除

3.6 替换

3.6.1 字母字符的大小写替换

3.7 整行替换和单字符替换

3.8 增加

3.9 sed命令当中字符串的位置进行交换

3.10 取日志范围 


绪论

sed:类似于vim就是一个文本编辑器,按行来编辑和处理,针对文件内容的行进行处理

主要作用是对文本内容进行增删改查,sed可以支持正则表达式,支持扩展正则表达式

1、sed的原理:读取 执行 显示 三个过程

读取:读取文本内容后,读取到的内容存放到临时的缓冲区,模式空间

执行:在模式空间,根据读取的文本内容,按行执行,除非指定引号,否则会遍历所有行,从上往下执行

显示:执行完后,把执行结果打印,如果要改变生效,模式空间被修改的内容会写入到指定的文件当中,只是操作,但是不最终写入文件,只展示结果,展示完后,模式空间的数据立即删除

2、sed 文本内容处理工具,文件过大怎么办?

split拆分文件

或者通过  cat  文件名  |  sed  处理(只适用于中兴文件,大型文件还是先分割)

3、sed的操作选项

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

3.1 常用选项

-e :条件操作选项

-f :指定脚本文件来处理输入的文件内容,把命令写在脚本里,用脚本里的命令来处理第二个文件里面的内容

-i :立即生效 慎用

-n :显示script处理之后的结果

3.2 操作符

s 替换指定字符

d  删除指定的行

a  增加在当前的下面插入指定内容

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

c  替换,整行替换

y  替换字符,但是替换前后的字符长度必须一致

p  打印

r  扩展正则

sed的核心就是改,删 ,增 查是没有grep强大 

sed '  '  :查看打印功能

eg:sed  '  '  /etc/passwd

只输出行号:sed  -n  '='  ky30.txt

输出行号和内容:sed  -n  '=;p'  ky30.txt

打印指定行:sed  -n  '2p'  ky30.txt

直接打印最后一行:sed  -n  '$p'  ky30.txt

3.3 行号的范围打印

sed  -n  '1,3p'  ky30.txt  打印1到3行

sed  -n  '2,+2p'  ky30.txt  打印第2到第4行

 sed  -n  '2p;$p'  ky30.txt  打印第二行和最后一行

3.4 对包含指定字符串的内容进行打印

sed  -n  '/o/p'  ky20.txt  把所有包含o的行会全部打印

sed  -r  -n  '/(99:){2}/p'  /etc/passwd  把有99的那行打印

3.5 删

sed  "d"  ky30.txt

eg:怎么不进人文件就可以删除文件的内容(免交互删除)

sed  -i  'd'  ky30.txt或者 cat  /dev/null  >  ky30.txt

指定行号进行删除:

sed  -n  '3d;p'  ky30  删除第三行,打印剩余行内容

sed  -n  '|d;3d;p'  ky30.txt

sed  '/big/!d'  ky30.txt  除了big这行不删除

3.5.1 正则表达式删除

sed  '/^$'  ky30.txt  删除空行

3.6 替换

s:替换字符串

c:整行替换

y:单字符替换,前后长度保持一致

sed  -n  's/root/test/p'  /etc/passwd  替换每行的第一个root为test,想要替换第二个在p前面加一个2,想要替换全部在p前面加个g

3.6.1 字母字符的大小写替换

sed  's/[a-z]/\u&/'  ky30.txt  首字母变大写了

sed  's/[a-z]/\u&/g'  ky30.txt所有字母都生效

l&转换成小写的特殊符号,在使用时,需要转义符\

eg:sed  's/[A-Z]\l&/g'  ky30.txt

 u&转换成大写的特殊符号,在使用时,需要转义符\

g 全部替换,如果不加,只会更改首字符

3.7 整行替换和单字符替换

sed  '/exy/c  zhangsan is  sexy'  ky30.txt  将exy替换成zhangsan  is  sexy

字符串替换前后长度要相同:y

sed  'y/a/1/'  ky30.txt  将a换成1

3.8 增加

a:在下一行添加

i:在上一行添加

r: 在行后读入指定文件内容

eg:sed  '/123/a  456'  ky30.txt

sed  '/bighouse/r  ky31.txt'  ky30.txt   前面为要读的文件  后面为本文件

3.9 sed命令当中字符串的位置进行交换

sed  -r  使用扩展正则

echo  ky30lt  |  sed  -r  's/(ky30)(lt)/\2\'p

汉字换位:

echo  汉字  |  sed  -r  's/(.)(.)/\2\1/'

sed  -f: 指定脚本文件来处理输入的文件内容,把命令写在脚本里,用脚本里的命令来处理第二个文件里面的内容

3.10 取日志范围 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/63243.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python爬虫的requests(学习于b站尚硅谷)

目录 一、requests  1. requests的基本使用  (1)文档  (2)安装  (3)响应response的属性以及类型  (4)代码演示 2.requests之get请求  3. requests之post请求  &#x…

React UI组件库

1 流行的开源React UI组件库 1 material-ui(国外) 官网: Material UI: React components based on Material Design github: GitHub - mui/material-ui: MUI Core: Ready-to-use foundational React components, free forever. It includes Material UI, which implements Go…

ubuntu虚拟机磁盘压缩:vmware-toolbox-cmd命令实现

压缩之前,虚拟机占用磁盘空间 虚拟机必须已经安装vmware-tool,运行如下命令,参看磁盘的挂载点 sudo /usr/bin/vmware-toolbox-cmd disk list $sudo /usr/bin/vmware-toolbox-cmd disk list [sudo] password for lkmao: Shrink disk is disab…

学以致用:python面向对象和PyEcharts的完美混合技

文章目录 学习目标数据案例分析数据内容需求分析参考代码data_define.pyfile_define.pymain.py 学习目标 使用面向对象思想完成数据读取和处理基于面向对象思想重新认知第三方库使用(PyEcharts) 数据案例分析 数据内容 1月份数据是普通文本,使用逗号分割数据记录&…

计算机网络—TCP

这里写目录标题 TCP头格式有哪些为什么需要TCP,TCP工作在哪什么是TCP什么是TCP连接如何确定一个TCP连接TCP和UDP的区别,以及场景TCP和UDP能共用一个端口?TCP的建立TCP三次握手过程为什么是三次握手、不是两次、四次why每次建立连接&#xff0…

Docker安装 Kibana

目录 前言安装Kibana步骤1:准备1. 安装docker2. 搜索可以使用的镜像。3. 也可从docker hub上搜索镜像。4. 选择合适的redis镜像。 步骤2:拉取 kibana 镜像拉取镜像查看已拉取的镜像 步骤3:创建容器创建容器方式1:快速创建容器 步骤…

“中国软件杯”飞桨赛道晋级决赛现场名单公布

“中国软件杯”大学生软件设计大赛是由国家工业和信息化部、教育部、江苏省人民政府共同主办,是全国软件行业规格最高、最具影响力的国家级一类赛事,为《全国普通高校竞赛排行榜》榜单内赛事。今年,组委会联合百度飞桨共同设立了“智能系统设…

浅谈Spring与字节码生成技术

概要 今天来谈一谈我们熟知的Spring框架和字节码技术有什么联系。 Java程序员几乎都了解Spring。 它的IoC(依赖反转)和AOP(面向切面编程)功能非常强大、易用。而它背后的字节码生成技术(在运行时,根据需要…

[Vulnhub] matrix-breakout-2-morpheus

目录 <1> 信息收集 <2> getshell <3> Privilege Escalation&#xff08;提权&#xff09; <1> 信息收集 nmap -sP 192.168.236.0/24 扫描一下靶机ip 靶机ip: 192.168.236.154 nmap -A -p 1-65535 192.168.236.154 扫描一下靶机开放哪些服务 开放…

VSCode Remote-SSH (Windows)

1. VSCode 安装 VSCode 2. 安装扩展 Remote SSH Getting started Follow the step-by-step tutorial or if you have a simple SSH host setup, connect to it as follows: Press F1 and run the Remote-SSH: Open SSH Host… command.Enter your user and host/IP in the …

OpenStack监控工具

OpenStack是一个开源的云计算管理平台项目&#xff0c;是一系列软件开源项目的组合。由NASA和Rackspace合作研发并发起&#xff0c;以Apache许可证&#xff08;Apache软件基金会发布的一个自由软件许可证&#xff09;授权。 OpenStack为私有云和公有云提供可扩展的弹性的云计算…

【力扣每日一题】23. 合并 K 个升序链表 暴力法-快排 8.12打卡

文章目录 题目思路代码 题目 合并 K 个升序链表 难度&#xff1a; 困难 描述&#xff1a; 给你一个链表数组&#xff0c;每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中&#xff0c;返回合并后的链表。 示例 1&#xff1a; 输入&#xff1a;lists [[1,4,5…