Linux 文本查看命令之sed

Stream Editor 流编辑器 做行处理的

默认不直接编辑原文件,在内存中进行处理(但是会整篇处理),临时存放的空间叫做pattern space(模式空间)。如果可以被关键字匹配,然后就进行编辑(编辑完成后,可以将新的内容放入hold space,保持空间),如果没有被关键字匹配就默认输出到标准输出。

-n选项不输出模式空间中的内容至屏幕,默认情况下,不论模式空间的内容是否匹配关键字都会输出至屏幕。

-e script 默认只能一次处理一个脚本,-e 之后可以跟多个脚本,一个-e对应一个脚本,实现多点编辑。

-f /path/to/sed_script_file 每行一个编辑命令

-r 支持扩展正则表达式

-i 直接编辑原文件

地址定界

指定编辑范围

空地址表示对全文进行处理

单地址 # 指定行

/pattern/ 被关键字匹配到的每一行

地址范围

#,# 指定行范围

#,+# 指定开始行,并往下#行

#,/pattern/ 指定行开始,到第一次匹配关键的行

/pattern1/,/pattern2/从第一次匹配关键字1开始,到第一次匹配关键字2的行

1~2 ~#表示步进,从第一行开始的奇数行

2~2 从第二行开始的偶数行

编辑命令 都是在操作  模式空间

d 删除指定范围内容

原文件没有改变

删除(不显示)包含UUID字符串的行

注意:这两次d的位置 一次是在''里面,一次是在//外面

可以在外面

现在看看-n的效果

加了-n 什么都看不到了

显示奇数行

删除偶数就是奇数

显示偶数行

删除奇数就是偶数

p:显示模式空间中的内容

为什么1和2出现了两次呢?因为,sed模式会将模式空间中的内容输出来,p的效果是将1和2输出,所以1和2输出了两次,为了不让模式空间的内容输出,只看p的效果,可以加个-n

显示奇数行

显示1到3行

在指定位置增加内容

# \text

在第3行后增加指定内容

添加后的效果,和-n的效果 如果追加的内容里有空格也不用管

在第三行增加多行内容

注意:需要在单引号中写出需要追加的内容

在第三行追加内容,之前的第三行就变成第四行了。

使用指定内容替换指定行

c \text

数字3没了,被This is a test字符串替换了

w将指定范围内的内容另存为其他文档

将非#号开头的行输出来

这里可以看出,sed是支持正则表达式的,这个例子的难点就在于如何标识非#号

r将其他文件的内容追加到指定行

在第四行之后追加内容。

为指定行打印行号

先打印行号,在输出行的内容

! 条件取反

将非#号开头的行输出来

第一个是非#号开头的行,第二个是#号开头的行,第二个命令我用了! 条件取反,而且注意这里的!需要转义,不然就解析为最近一次以p开头的命令并执行

s 查找替换

这个类似于VIM编辑器的查找替换操作,分隔符可以执行指定 @ # 都可以,g表示全局替换(默认选项) w将替换后的内容另存为 ,p显示替换成功的行

删除文件中所有以空白字符开头的行的行首的所有空白符

这个是原文

这个是改过之后的,默认是全局又该

这个就显示被修改过的行

把文件中的1改为a

将指定行的1改为a

sed可以一次执行多次编辑操作

将/etc/fstab中的UUID改为uuid,再将uuid所在的行删除

输入一个绝对路径给sed命令,取出其目录,类似于dirname的命令

发现没有t没有了

我现在加个尾部的定位符

发现i字符没了,所以现在要取出dirname很简单啦

输入一个绝对路径的sed,取出其文件名,类似于basename的命令

这里要取代的是一个范围,需要用\1的方式

高级编辑命令

h 将模式空间中的内容覆盖至保持空间中

H 将模式空间中的内容追加至保持空间中

g 将保持空间中的内容覆盖至模式空间中

G 将保持空间中的内容追加至模式空间中

x 将模式空间中的内容与保持空间中的内容互换

n 读取匹配到的行的下一行至模式空间中。

N 读取匹配到的行的下一行至模式空间中 追加

d 删除模式空间中的行

D 删除多行模式空间中的所有行

p显示模式空间中的内容

案例一 显示偶数行

由于没有指定操作范围,程序首先读入第一行,n的效果是让命令去读取本行的下一行,并将内容读入到模式空间,p的效果是将匹配的模式空间中的内容输出。

案例二 逆序显示文件内容

sed ‘1!G;h;$!d’ file_name

从这个例子中,重新说明了几个问题,第一:sed 从文件中读取的内容首先放入模式空间中,通过匹配之后再放入保持空间中 第二:sed 读取内容是以行为单位的。第三 $符号的意思是读取内容的最后一行。 这个命令的过程类似于汉诺塔的游戏。

案例三 显示最后一行

sed '$!d' filename

案例四 显示最后两行

sed '$!N;$!D' 显示最后两行

当系统读入倒数第二行,由于倒数第二行不是倒数第一行那么就N,读取倒数第一行并追加。现在的模式空间中有2行,程序读取了倒数第一行那就不删除(!D),最后输出到屏幕

案例五

显示奇数行

sed 'n,d' filename

原文地址:http://blog.51cto.com/yueyue207/2090995

时间: 2024-10-14 16:26:03

Linux 文本查看命令之sed的相关文章

Linux文本查看命令 cat ,more ,less ,head,tail

2014年10月8号 天气:无风 雾霾  空气污染指数452  严重污染   ①cat  /etc/rc.d/rc.sysyinit    将文本内容全部显示到终端 常用参数  -n  添加显示行号   shift+pageup  前翻页  shift+pagedown  后翻页      缺点:倾倒显示数据  所以只能翻页查看缓存里面的数据,如果数据过多也不能显示前面数据.个人认为适合显示不多的文本,或者非常熟悉的文本   ②more  /etc/rc.d/rc.sysyinit     支持

Linux基础文本查看命令之 cat,tac,more,less,head,tail

在使用linux的过程中多多少少都会涉及到文本的操作,因此掌握一些文本操作的工具命令能大大的提高我们的工作效率. cat命令 cat命令的用途是链接文件或标准输入并打印.这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者是从标准输入读取内容并显示,它常与重定向符号配合使用. 1)命令格式 cat    [选项]    [FILENAME] 2)命令功能 将文件或标准输入组合输出到标准输出. 3)命令参数 -E:在每行结束处显示 $ -n:对输出的所有行编号 -s:不输出多行空行 4)常

Linux基础之文本查看命令(cat,tac,rev,head,tail,more,less)

Linux中我们总会有查看文本某些内容的时候,如果我们仅因为查看文本就使用vi进去文件又增加了不少额外的操作不方便.下面介绍一些文本查看命令,大家看后应该会有所帮助 cat cat - concatenate files and print on the standard output 表达格式:cat [OPTION]... [FILE]... 常用选项: -A:显示所有控制符 -n:显示行数 -E:显示行结束符 下面以几个例子来具体说明cat及其选项的使用 实验目录/test  文本/tes

Linux文本处理命令

正则表达式 POSIX标准将正则表达式分为两类 1.基本的正则表达式 2.扩展的正则表达式 大部分Linux应用和工具仅支持基本的正则表达式 基本正则表达式 符号 意义 * 0个或多个字符 . 匹配任意字符 ^ 行首,在[]中表示非 $ 行尾 [] 匹配字符集合 \ 转义字符 \<\> 精确匹配符号 \{n\} 匹配n次 \{n,\} 匹配至少n次 \{m,n\} 匹配m~n次 扩展正则表达式 符号 意义 ? 匹配0个或1个 + 匹配1个或多个 () 表示一个字符集合或用在expr中 | 表示

Linux文本处理“三剑客”之sed

sed(Stream Editor)是一个行编辑工具.下面我们介绍 sed 的实现原理和基本使用方法. 一.sed 的处理文本的流程 基本处理流程如下: 处理流程是:每次读入文本文件的一行到内存中的模式空间中,在模式空间中处理后将处理的结果输出,默认会打印到屏幕上.因此,默认情况下,不会改变原文件的内容. 二.sed 命令的使用 基本语法:sed [options]... '地址定位 编辑命令' FILE... 地址定位的方法: 1.行定位: start_line[,end_line] 2.模式

编程小技巧之 Linux 文本处理命令

合格的程序员都善于使用工具,正所谓君子性非异也,善假于物也.合理的利用 Linux 的命令行工具,可以提高我们的工作效率. 本文简单的介绍三个能使用 Linux 文本处理命令的场景,给大家开阔一下思路.希望大家阅读完这篇文章之后,要多加实践,将这些技巧内化到自己的日常工作习惯中,真正的提高效率.内化很重要,就像开玩笑所说的一样,即使我知道高内聚,低耦合的要求,了解 23 种设计模式和 6 大原则,熟读代码整洁之道,却仍然写不出优秀的代码.知道和内化到行为中区别还是很大的. 能不能让正确的原则指导

linux 进程查看命令汇集

首先,向大家介绍一些linux查看进程的命令,pstree.ps.top.htop等,接下来为大家演示这几个常用命令. 1,  Linux ps命令: (1)linux 进程查看命令ps,常用命令为#ps aux 如图所示: 其中红色圈出部分: PID:进程号  %CPU:进程占用cpu比例  %MEM:进程占用内存比例  VSZ:虚拟内存占用比例  RSS:常驻内存级 (2)ps常用命令组合#ps –ef  如图所示: 其中,-e:显示所有进程  -f:显示完整格式 2,  linux top

Linux系统信息查看命令大全

Linux系统信息查看命令大全 最近看了一些Linux命令行的文章,在系统信息查看方面学到不少命令. 想起以前写过的一篇其实Linux这样用更简单, 发现这些系统信息查看命令也可以总结出一篇小小的东西来了. 另外这里还有非常多的命令, 可以作为参考. 系统# uname -a # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue # 查看操作系统版本 # cat /proc/cpuinfo # 查看CPU信息 # hostname # 查看计算机名 # lspci -

Linux下常用命令之sed学习总结

Sed功能说明: Sed是linux下一个强大的文本文件处理工具,通过对文件增加.删除.查找.查询操作,配合正则表达式以实现工作中的各种需求.同时也是一名运维人员必须掌握的核心技能. ------------------------------------------------------------------------------------------------------ sed正则表达式: ^           匹配行开始 $           匹配行结束 .