首页
技术博客
PHP教程
数据库技术
前端开发
HTML5
Nginx
php论坛
新用户注册
|
会员登录
PHP教程
技术博客
编程问答
PNG素材
编程语言
前端技术
Android
PHP教程
HTML5教程
数据库
Linux技术
Nginx技术
PHP安全
WebSerer
职场攻略
JavaScript
开放平台
业界资讯
大话程序猿
登录
极速注册
取消
热门标签 | HotTags
web3
tree
java
golang
python
command
include
controller
post
cmd
scala
eval
range
flutter
solr
nodejs
web
loops
expression
replace
httpclient
install
lua
hashcode
object
schema
httprequest
frameworks
usb
foreach
client
typescript
dagger
go
jsp
future
hash
metadata
subset
sum
jar
utf-8
callback
integer
request
header
audio
split
python2
erlang
uml
php
default
join
spring
yaml
php7
chat
version
less
emoji
settings
triggers
main
copy
actionscrip
buffer
grid
dockerfile
ascii
testing
php8
timezone
timestamp
select
char
js
datetime
数组
当前位置:
开发笔记
>
编程语言
> 正文
深入理解sed的G、H、g、h命令及其高级应用
作者:我们的北京宫 | 来源:互联网 | 2024-12-22 12:24
本文详细介绍了流编辑器sed中的G、H、g、h命令,探讨了它们的工作原理及应用场景。通过实例解析和图解分析,帮助读者掌握这些高级命令的使用方法。
### 引言
在文本处理工具中,sed(Stream Editor)是一个功能强大的流编辑器,广泛应用于Linux/Unix系统中。它能够接收标准输入并输出到标准输出,适用于多种文本处理任务。
#### sed的工作流程
sed的核心工作原理是通过模式空间(Pattern Space)和保持空间(Hold Space)来处理数据。模式空间用于存储当前处理的行内容,而保持空间则可以作为临时存储区域。具体来说,sed会逐行读取文件内容到模式空间,执行用户定义的命令,最后将结果输出。模式空间在每次处理完一行后会被清空,准备处理下一行。
#### 模式空间与保持空间
- **模式空间(Pattern Space)**:相当于一个“流水线”,所有操作都在这里进行。
- **保持空间(Hold Space)**:类似于一个“仓库”,用于临时存储数据。
#### 高级命令的应用场景
为了满足更复杂的文本处理需求,sed提供了一些高级命令,如G、H、g、h等。这些命令允许用户在特定条件下保留或交换模式空间和保持空间的内容。
##### 命令详解
- **g**:将保持空间的内容复制到模式空间,并清除模式空间原有内容。
- **G**:将保持空间的内容追加到模式空间的末尾。
- **h**:将模式空间的内容复制到保持空间,并清除保持空间原有内容。
- **H**:将模式空间的内容追加到保持空间的末尾。
- **d**:删除模式空间中的所有行,并读入下一行。
- **D**:删除多行模式空间中的第一行,不读入下一行。
##### 实例:用sed模拟tac命令
假设我们有一个文件`mm`,其内容如下:
```
1
2
3
```
要实现倒序输出,可以使用以下命令:
```bash
sed '1!G;h;$!d' mm
```
解释:
- `1!G`:从第二行开始,将保持空间的内容追加到模式空间。
- `h`:将模式空间的内容复制到保持空间。
- `$!d`:如果不是最后一行,则删除当前行。
#### 图解分析过程
| P: Pattern Space | H: Hold Space |
|------------------|---------------|
| 绿色表示模式空间的数据 | 蓝色表示保持空间的数据 |
![图解分析](https://www.#.com/imgs/5/5/1/4/75/0932f76af3fcfacf7721c57b2bf2bb54.jpe)
#### 参考资料
- 《sed and awk 第二版》
- Sed - An Introduction and Tutorial by Bruce Barnett
- sed的高级应用 - haijd Article
编辑器
command
文件
copy
buffer
int
awk
io
http
写下你的评论吧 !
吐个槽吧,看都看了
会员登录
|
用户注册
推荐阅读
post
请看|间隔时间_Postgresql 主从复制
请看|间隔时间_Postgresql 主从复制 ...
[详细]
蜡笔小新 2024-12-19 03:24:54
scala
SQL数据库面试题解析
本文深入探讨了SQL数据库中常见的面试问题,包括如何获取自增字段的当前值、防止SQL注入的方法、游标的作用与使用、索引的形式及其优缺点,以及事务和存储过程的概念。通过详细的解答和示例,帮助读者更好地理解和应对这些技术问题。 ...
[详细]
蜡笔小新 2024-12-22 14:43:35
install
Nginx 反向代理与负载均衡实验
本实验旨在通过配置 Nginx 实现反向代理和负载均衡,确保从北京本地代理服务器访问上海的 Web 服务器时,能够依次显示红、黄、绿三种颜色页面以验证负载均衡效果。 ...
[详细]
蜡笔小新 2024-12-22 15:15:48
foreach
实用正则表达式有哪些
小编给大家分享一下实用正则表达式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下 ...
[详细]
蜡笔小新 2024-12-22 13:59:04
web
VC++如何监控cpu fan 转速?
主板IO用W83627THG,用VC如何取得CPU温度,系统温度,CPU风扇转速,VBat的电压. ...
[详细]
蜡笔小新 2024-12-22 13:48:42
include
MySQL集群搭建指南(第二部分)
本文详细介绍了如何解压并安装MySQL集群压缩包,创建用户和组,初始化数据库,配置环境变量,并启动相关服务。此外,还提供了详细的命令行操作步骤和常见问题的解决方案。 ...
[详细]
蜡笔小新 2024-12-20 17:30:48
command
使用C#与SQL Server进行基础数据库交互
本文档介绍了如何在Visual Studio 2010环境下,利用C#语言连接SQL Server 2008数据库,并实现基本的数据操作,如增删改查等功能。通过构建一个面向对象的数据库工具类,简化了数据库操作流程。 ...
[详细]
蜡笔小新 2024-12-20 14:11:19
java
Logback使用小结
1一定要使用slf4j的jar包,不要使用apachecommons的jar。否则滚动生成文件不生效,不滚动的时候却生效~~importorg.slf ...
[详细]
蜡笔小新 2024-12-19 20:40:37
web
Python面试题精粹
本文档汇总了Python编程的基础与高级面试题目,涵盖语言特性、数据结构、算法以及Web开发等多个方面,旨在帮助开发者全面掌握Python核心知识。 ...
[详细]
蜡笔小新 2024-12-19 20:26:25
include
深入理解JSP中的include指令与taglib指令
本文详细介绍了JSP的三大指令:page、include和taglib,重点探讨了静态包含与动态包含的区别及其应用场景,并解释了如何使用taglib指令引入第三方标签库。 ...
[详细]
蜡笔小新 2024-12-22 17:24:51
install
Coursera ML 机器学习
2019独角兽企业重金招聘Python工程师标准线性回归算法计算过程CostFunction梯度下降算法多变量回归![选择特征](https:static.oschina.n ...
[详细]
蜡笔小新 2024-12-22 16:09:09
include
紫荆花之恋:动态树上的小精灵友谊问题
本题来自WC2014,题目编号为BZOJ3435、洛谷P3920和UOJ55。该问题描述了一棵不断生长的带权树及其节点上小精灵之间的友谊关系,要求实时计算每次新增节点后树上所有可能的朋友对数。 ...
[详细]
蜡笔小新 2024-12-22 14:36:54
include
选择性加密图像文件内容
本文探讨了仅对图像文件的内容进行加密的方法,而不加密整个文件。通过这种方式,可以保护图像中的敏感信息,同时保持文件的其他部分不受影响。 ...
[详细]
蜡笔小新 2024-12-21 11:05:46
replace
java文本编辑器,java文本编辑器设计思路
java文本编辑器,java文本编辑器设计思路 ...
[详细]
蜡笔小新 2024-12-19 21:02:48
object
基于目标检测结果的特定类别图像与XML文件快速分析方法
本文介绍了一种根据目标检测结果,从原始XML文件中提取并分析特定类别的方法。通过解析XML文件,筛选出特定类别的图像和标注信息,并保存到新的文件夹中,以便进一步分析和处理。 ...
[详细]
蜡笔小新 2024-12-19 17:32:58
我们的北京宫
这个家伙很懒,什么也没留下!
Tags | 热门标签
web3
tree
java
golang
python
command
include
controller
post
cmd
scala
eval
range
flutter
solr
nodejs
web
loops
expression
replace
httpclient
install
lua
hashcode
object
schema
httprequest
frameworks
usb
foreach
RankList | 热门文章
1
Oracle中的ORA-01548: active rollback segment '_SYSSMU1$' found
2
Oracle性能优化有时就这么简单_index
3
ORA-27054错误解决两例-mysql教程
4
Oracle中如何插入特殊字符: 和 ' (多种解决方案)-mysql教程
5
Oracle Table连接方式分析-mysql教程
6
Oracle “TNS-12535: TNS: 操作超时”故障的解决办法
7
RAC环境下的阻塞(blocking blocked)-mysql教程
8
Oracle 重建表(rename)注意事项总结-mysql教程
9
配置静态监听sid_name大小写造成无法登录
10
Oracle SQL执行计划基线总结(SQL Plan Baseline)
11
Oracle常用系统查询
12
Oracle dmp文件损坏恢复案例
13
Oracle使用WITH AS和HINT MATERIALIZE优化SQL解决FILTER效率低下
14
Oracle ErrorStack 使用和阅读详解
15
Oracle RAC cache fusion原理测试-mysql教程
PHP1.CN | 中国最专业的PHP中文社区 |
DevBox开发工具箱
|
json解析格式化
|
PHP资讯
|
PHP教程
|
数据库技术
|
服务器技术
|
前端开发技术
|
PHP框架
|
开发工具
|
在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved |
京公网安备 11010802041100号
|
京ICP备19059560号-4
| PHP1.CN 第一PHP社区 版权所有