Linux命令:sed简介

sed是一种在线行编辑器,一次处理一行。工作时,把当前处理的行放到“模式空间”中进行编辑,编辑完成后把内容输送至屏幕。

语法:sed [OPTION]…{script}…[input file]

选项:

-r:支持正则表达式

-n:静默模式,不显示内容

-e: script1 -e script2 -e script3:指定多脚本运行

-f /path/to/script_file:从指定的文件中读取脚本并运行

-i: 直接修改源文件

命令:

d: 删除模式空间中的行;

=:显示行号;

a \text:附加text

i \text:插入text,支持\n实现多行插入;

c \text:用text替换匹配到的行;

p: 打印模式空间中的行;

s/regexp/replacement/:替换由regexp所匹配到的内容为replacement;

g: 全局替换;

w /path/to/somefile:把指定的内容另存至/path/to/somefile路径所指定的文件中;

r /path/from/somefile:在文件的指定位置插入另一个文件的所有内容,完成文件合并

正则:

字符匹配:., [], [^]

次数匹配:*, \?, \+, \{m,n\}, \{n\}

位置锚定:^, $, \<, \>

分组及引用:\(\), \1, \2, ...

多选一:a|b|c

定界:

#: 指定行;

$: 最后一行;

/regexp/:任何能够被regexp所匹配到的行;

\%regexp%:同上,只不过换作%为regexp边界符;

/regexp/| :

\%regexp%| :匹配时忽略字符大小写;

startline,endline:

#,/regexp/:从#行开始,到第一次被/regexp/所匹配到的行结束,中间的所有行;

#,#

/regexp1/,/regexp2/:从第一次被/regexp1/匹配到的行开始,到第一次被/regexp2/匹配到的行结束,中间的所有行;

#,+n:从#行开始,一直到向下的n行;

first~step:指定起始行,以及步长;

1~2,2~2

高级命令:

h:用模式空间中的内容覆盖保持空间的内容;

H:把模式空间中的内容追加至保持空间中内容的后面;

g:从保持空间中取到其内容,并将其覆盖模式空间中的内容;

G:从保持空间中取到其内容,并将其追加在模式空间中的内容的后面;

x:把保持空间和模式空间中的进行交换;

n:读取匹配到的行的下一行至模式空间;(会覆盖模式空间中的原有内容);

N:读取匹配到的行的下一行至模式空间,追加在模式空间中原有内容的后面;

d:删除模式空间中的内容;

D:删除多行模式空间中的首行;

注意:命令功能可使用!取反;分号可用于分隔脚本;

练习:

1.删除/root/file文件中所有行的行首的空白字符

[[email protected] ~]# cat file && cat file |wc -l

aaaaaaaaaaaaaaaaa

bbbbbbbbbbbbbbbb

cccccccccccccccc

2. 删除/etc/fstab文件中所有以#开头,后跟至少一个空白字符的行的行首的#和空白字符

[[email protected] ~]# sed ‘s/^#[[:space:]]\+//‘ /etc/fstab

#

/etc/fstab

Created by anaconda on Wed Aug 26 23:57:24 2015

#

Accessible filesystems, by reference, are maintained under ‘/dev/disk‘

See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#

/dev/mapper/VolGroup-lv_root / ext4 defaults 1 1

UUID=ccfe9f33-b5da-48b1-821b-b3bec206147b /boot ext4 defaults 1 2

/dev/mapper/VolGroup-lv_swap swap swap defaults 0 0

tmpfs /dev/shm tmpfs defaults 0 0

devpts /dev/pts devpts gid=5,mode=620 0 0

sysfs /sys sysfs defaults 0 0

proc /proc proc defaults 0 0

3. 只查看/etc/fstab文件的第1行到第5行

[[email protected] ~]# sed -n ‘1,5p‘ /etc/fstab

#

# /etc/fstab

# Created by anaconda on Wed Aug 26 23:57:24 2015

#

4.删除文件中包含“my”的行到包含“you”的行之间的行

[[email protected] ~]# cat file

this is my test line

how are you

hello

how are you tom

my

aaaaaaaaaaaaa

you

[[email protected] ~]# sed ‘/my/,/you/d‘ file

hello

how are you tom

5.查询包含“you”的所有行

[[email protected] ~]# sed -n ‘/you/p‘ file

how are you

how are you tom

you

6.在文件中每行后面添加空行

[[email protected] ~]# sed ‘G‘ file

this is my test line

how are you

hello

how are you tom

my

aaaaaaaaaaaaa

you

7. 保证指定的文件每一行后方有且只有一个空白行

[[email protected] ~]# sed ‘/^$/d;G‘ file

this is my test line

how are you

hello

how are you tom

my

aaaaaaaaaaaaa

you

8.打印奇数行

[[email protected] ~]# sed -n ‘1~2p‘ file

1,this is my test line

3,hello

5,my

7,you

时间: 2024-10-03 14:00:59

Linux命令:sed简介的相关文章

核心系统命令实战 第一章Linux命令行简介

第一章Linux命令行简介 1.1 Linux命令行概述 1.1.1 Linux 命令行的开启和退出 开启:登陆账号密码进入系统 退出:exit/logout  快捷键:Ctrl+d 1.1.2 Linux命令行提示符介绍 (1)提示符由PS1环境变量控制.实例代码如下: [[email protected] ~]# set | grep PS1 PS1='[\[email protected]\h \W]\$ ' 这里的PS1='[\[email protected]\h \W]\$ ',可以

Linux命令行简介

1 Linux系统命令操作语法的格式 命令_[参数选项]_[文件或路径]    其中 _ 至少一个空格    如:rm -f /etc/hosts    其中/etc/hosts完整路径不带空格   中括号表示可选的,即命令的参数和路径文件都是可选的,参数选项表示使用一个命令的不同功能,比如,可以删除一个文件和创建一个文件 2 # 是超级管理员的提示符root对应的提示符   $   普通用户oldboy对应的提示符   @  是一个提示符  ~ 当前用户所在的家目录 [[email prote

[ Linux命令 ] sed

一.sed是什么? Linux sed命令是利用script来处理文本文件. sed可依照script的指令,来处理.编辑文本文件. Sed主要用来自动编辑一个或多个文件:简化对文件的反复操作:编写转换程序等. 二.sed基本语法 sed基本用法: sed: 流编辑器,行编辑器 ( 全屏编辑器:vim ) 模式空间:默认不编辑源文件,仅对模式空间中的数据做处理 sed [option]'AddressCommand' file ... -n: 静默模式    不再默认显示模式空间中的内容    

Linux 命令---- sed

sed 命令:  常用场景:1. 在指定位置增加内容2. 删除指定字符所在的行:3. 替换指定字符串为新的字符串:4. 只显示包含指定字符的内容 Answer:-i: 表示将修改直接持久化到文件中1.>sed -i '/test/a\one\ntwo' test.txt // 在存在test字符串的行后添加one 然后换行添加two 注: 不用加 g选项 就默认把符合条件的都加入 a\ 后面的内容 加入一行默认是自动换行:最后一行不用加 \n >sed -i '#test_3#a\two' t

linux 命令行简介

1.基本格式:[用户名@主机名 目录]#|$ 需要执行的命令示例: 说明: 1.#或者$只出现一个,#表示当前登陆的用户是超级用户,$表示当前登陆的是普通用户. 2.上例中的limonero表示当前登陆的用户是limonero用户,$表示这个用户是一个普通用户. 3.@后面的名称表示当前用户登陆的主机名称,即登陆的服务器的名称. 4.[]中最后一部分表示当前登陆的用户现在所处的目录,即在系统中的位置. 2.命令行格式的基本配置:使用PS1进行配置#查看当前格式的命令: set|grep PS1示

linux命令-sed,uniq,cut,wc

sort sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出.如果 File 参数指定多个文件,那么 sort 命令将这些文件连接起来,并当作一个文件进行排序. sort语法 [[email protected] ~]# sort [-fbMnrtuk] [file or stdin] 选项与参数: -f :忽略大小写的差异,例如 A 与 a 视为编码相同: -b :忽略最前面的空格符部分: -M :以月份的名字来排序,例如 JAN, DEC 等等的排序方法: -n :使

Linux命令----sed和awk

sed -n :加上-n参数后,只有经过sed特殊处理的哪一行或者动作才会被列出来. 动作说明:[n1,n2[function]] function : a:新增,a的后面可以接字符串,而这些字符串会在新的一行出现(目前的下一行) c:取代,c的后面可以接字符串,这些字符串可以取代 n1,n2 之间的行 d:删除,d后面通常不接任何东西; i:插入,i后面可以接字符串,而这些字符串会出现在新的一行(目前的上一行) p:列印, s:取代,可以直接进行取代的工作,通常这个s的动作可以搭配正则表示法

Linux命令sed

sed流编辑器:Stream EDitor sed行编辑器,使用sed,将文件的行加载到内存,符合sed模式空间的显示到屏幕上,sed默认不编辑文件,仅对模式空间的数据处理,处理结束后,将符合模式空间的行打印到屏幕上 sed模式空间 sed [options选项] 'AddressCommand' file ... options: 选项,如 -n静默模式,只显示符合条件的行,不显示模式空间的内容 Address: 指的是文件行的地址,如第一行到第10行 Command: 指的是对文件行的操作,

Linux 常用命令sed/awk/grep及正则表达式

linux命令sed和awk sed 主要功能 sed,stream editor.是一个"非交互式"字符流编辑器.输入流通过程序并输出到标准输出端. sed主要用来自动编辑一个或者多个文件(替换,插入,删除,追加,更改) 常见应用 抽区域 匹配正则表达式 比较域 增加,附加,替换 执行过程 sed一次处理一行或多行内容.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区

linux系统sed命令解析

1. Sed简介 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕.接着处理下一行,这样不断重复,直到文件末尾.文件内容并没有 改变,除非你使用重定向存储输出.Sed主要用来自动编辑一个或多个文件:简化对文件的反复操作:编写转换程序等.以下介绍的是Gnu版本的Sed3.02. 2. 定址 可以通过定址来定位你所希望编辑的行,该地址