首页
技术博客
PHP教程
数据库技术
前端开发
HTML5
Nginx
php论坛
新用户注册
|
会员登录
PHP教程
技术博客
编程问答
PNG素材
编程语言
前端技术
Android
PHP教程
HTML5教程
数据库
Linux技术
Nginx技术
PHP安全
WebSerer
职场攻略
JavaScript
开放平台
业界资讯
大话程序猿
登录
极速注册
取消
热门标签 | HotTags
case
audio
hook
actionscrip
random
dll
scala
rsa
httprequest
erlang
hashcode
cSharp
sum
javascript
header
keyword
web3
cPlusPlus
usb
process
less
tags
go
text
include
uml
request
cpython
lua
python
runtime
blob
plugins
perl
install
express
post
web
iostream
solr
bitmap
chat
python2
future
format
php8
hash
yaml
command
copy
triggers
node.js
php5
subset
hashtable
get
golang
heap
c语言
uri
md5
input
grid
foreach
typescript
expression
substring
default
bash
emoji
ascii
jsp
require
vbscript
bytecode
match
js
数组
fetch
当前位置:
开发笔记
>
编程语言
> 正文
深入理解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
写下你的评论吧 !
吐个槽吧,看都看了
会员登录
|
用户注册
推荐阅读
hive
Linux 自动化安装脚本详解
本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ...
[详细]
蜡笔小新 2024-12-27 16:33:32
process
深入探讨CPU虚拟化与KVM内存管理
本文详细介绍了现代服务器架构中的CPU虚拟化技术,包括SMP、NUMA和MPP三种多处理器结构,并深入探讨了KVM的内存虚拟化机制。通过对比不同架构的特点和应用场景,帮助读者理解如何选择最适合的架构以优化性能。 ...
[详细]
蜡笔小新 2024-12-25 19:15:51
python
python的交互模式怎么输出名文汉字[python常见问题]
在命令行模式下敲命令python,就看到类似如下的一堆文本输出,然后就进入到Python交互模式,它的提示符是>>>,此时我们可以使用print() ...
[详细]
蜡笔小新 2024-12-27 21:32:05
python
Python自动化处理:从Word文档提取内容并生成带水印的PDF
本文介绍如何利用Python实现从特定网站下载Word文档,去除水印并添加自定义水印,最终将文档转换为PDF格式。该方法适用于批量处理和自动化需求。 ...
[详细]
蜡笔小新 2024-12-27 13:10:20
random
从 .NET 转 Java 的自学之路:IO 流基础篇
本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ...
[详细]
蜡笔小新 2024-12-26 17:37:25
python
Python学习笔记:使用pydoc工具查询文档
本文介绍了在Windows环境下使用pydoc工具的方法,并详细解释了如何通过命令行和浏览器查看Python内置函数的文档。此外,还提供了关于raw_input和open函数的具体用法和功能说明。 ...
[详细]
蜡笔小新 2024-12-26 17:05:56
text
解析JSON格式文本并处理数据
本文介绍如何使用阿里云的fastjson库解析包含时间戳、IP地址和参数等信息的JSON格式文本,并进行数据处理和保存。 ...
[详细]
蜡笔小新 2024-12-26 16:06:09
sum
PHP 5.5.0rc1 发布:深入解析 Zend OPcache
2013年5月9日,PHP官方发布了PHP 5.5.0rc1和PHP 5.4.15正式版,这两个版本均支持64位环境。本文将详细介绍Zend OPcache的功能及其在Windows环境下的配置与测试。 ...
[详细]
蜡笔小新 2024-12-26 12:56:20
include
GDI基础介绍之几何绘图
使用GDI的一些AIP函数我们可以轻易的绘制出简 ...
[详细]
蜡笔小新 2024-12-25 18:23:37
request
HTTP请求与响应机制详解
本文深入探讨了HTTP请求和响应对象的使用,详细介绍了如何通过响应对象向客户端发送数据、处理中文乱码问题以及常见的HTTP状态码。此外,还涵盖了文件下载、请求重定向、请求转发等高级功能。 ...
[详细]
蜡笔小新 2024-12-23 20:40:08
python
Python——对象自省
对象自省自省在计算机编程领域里,是指在运行时判断一个对象的类型和能力。dir能够返回一个列表,列举了一个对象所拥有的属性和方法。my_list[ ...
[详细]
蜡笔小新 2024-12-23 12:55:35
text
深入理解JavaScript的作用域链与闭包
本文详细探讨了JavaScript中的作用域链和闭包机制,解释了它们的工作原理及其在实际编程中的应用。通过具体的代码示例,帮助读者更好地理解和掌握这些概念。 ...
[详细]
蜡笔小新 2024-12-23 01:27:41
text
深入解析Java虚拟机(JVM)架构与原理
本文旨在为读者提供对Java虚拟机(JVM)的全面理解,涵盖其主要组成部分、工作原理及其在不同平台上的实现。通过详细探讨JVM的结构和内部机制,帮助开发者更好地掌握Java编程的核心技术。 ...
[详细]
蜡笔小新 2024-12-21 23:50:40
include
rm: cannot remove `/usr/local/tmp/‘: Directory not empty
###问题删除目录时遇到错误提示:rm:cannotremoveusrlocaltmp’:Directorynotempty即使用rm-rf,还是会出现 ...
[详细]
蜡笔小新 2024-12-25 16:27:05
include
不确定性|放入_华为机试题 HJ9提取不重复的整数
不确定性|放入_华为机试题 HJ9提取不重复的整数 ...
[详细]
蜡笔小新 2024-12-24 16:13:05
我们的北京宫
这个家伙很懒,什么也没留下!
Tags | 热门标签
case
audio
hook
actionscrip
random
dll
scala
rsa
httprequest
erlang
hashcode
cSharp
sum
javascript
header
keyword
web3
cPlusPlus
usb
process
less
tags
go
text
include
uml
request
cpython
lua
python
RankList | 热门文章
1
请教一下各位大神,http中get请求里面携带的password一般采用怎样的方式生成?
2
koa2 从入门到进阶之路 (四)
3
Angular 2 Change Detection1
4
如何在PHP中利用foreach对多维数组进行遍历
5
php如何封装app(2023年最新分享)
6
C#学习教程:移植VB.NET Winforms应用程序到C#分享
7
R:删除重复的条目,如果它们在一年内到来 - R: removing duplicated entries if they come within a year
8
canal mysql5.7_canal实现mysql跨机房备份
9
函数式接口的基本概念和使用
10
winFrom制作安装包
11
内网和外网之间的通信(端口映射原理)
12
如何评价外星人Alienware在CES 2020上推出的神似Switch的Win掌机?
13
【算法】剑指 Offer 40. 最小的k个数 【重刷】
14
关于openGL的一些链接,主要是GLSL(不断更新)
15
如何使用C++实现简单校园导游系统
PHP1.CN | 中国最专业的PHP中文社区 |
DevBox开发工具箱
|
json解析格式化
|
PHP资讯
|
PHP教程
|
数据库技术
|
服务器技术
|
前端开发技术
|
PHP框架
|
开发工具
|
在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved |
京公网安备 11010802041100号
|
京ICP备19059560号-4
| PHP1.CN 第一PHP社区 版权所有