linux sed.写文件,Linux文件处理sed命令-linux sed命令详解-linux sed写入文件-嗨客网

本文详细介绍了Linux中的sed命令,用于文本过滤和替换。它将处理的行存储在模式空间中,通过地址指定编辑范围,常用功能包括行的添加、替换、删除等。sed默认不修改源文件,但可以使用-i选项直接写入。文章还提供了多个实用实例,如打印特定行、替换字符串、删除行等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux文件处理sed命令详解教程

Linux sed命令使用

Linux sed 命令处理时,把当前处理的行存储在临时缓冲区中,称为 ”模式空间”( oattern space),接看用 sed 命令处理缓冲区中的内容,处理成后,把缓冲区的内容送往屏幕显示。

接着理下一行,这样不断重复,直到文件末。文件内容没有改改变,除非使用了写入的命令,将内容更新。

定址用于决定对哪些行进行编辑。地址的形式可以是数字、正则表达式、或二者的结合。如果没有指定地址,sed将处理输入文件的所有行。

注意,sed 默认不会直接修改源文件数据,而是会将数据复制到缓冲区中,修改也仅限于缓冲区中的数据。

Linux sed命令详解

功能

对文本进行过滤与替换。

语法

sed [options] [cmd] [filename]

参数

参数

描述

options

sed 命令使用的参数。

cmd

脚本指令。

filename

要处理的文件,如果没有指定,从标准输入读取。

sed命令常用参数

参数

描述

–version

显示 sed 版本。

–help

显示帮助文档。

-n,–quit,–silent

静默输出,默认情况下,sed 程序在所有的脚本指令执行完毕后,将自动打印模式空间中的内容,该选项可以屏蔽自动打印。

-e script

允许多个脚本指令被执行。

-f script-file

从文件中读取脚本指令,对编写自动脚本程序很实用。

-i,–in-place

慎用,该选项将直接修改源文件。

-l,N

该选项指令l指令可以输出的行长度,l指令为输出非打印字符。

–posix

禁用 GNU sed 扩展功能。

-r

在脚本指令中使用扩展正则表达式。

-s,–separate

默认情况下,sed 将把输入的多个文件名作为一个长的连续的输入流,而 GNU sed 则允许把它们当作单独的文件。

-u,–unbuffered

最低限度的缓存输入和输出。

Linux sed命令功能详解

命令

描述

a\

在当前行后添加一行或多行。多行时除最后一行外,每行末尾需用 “\” 续行。

c\

用此符号后的新文本替换当前行中的文本。多行时除最后一行外,每行末尾需用 “\” 续行。

i\

在当前行之前插入文本。多行时除最后一行外,每行末尾需用 “\” 续行。

d

删除行。

h

把模式空间里的内容复制到暂存缓冲区。

H

把模式空间里的内容追加到暂存缓冲区。

g

把暂存缓冲区里的内容复制到模式空间,覆盖原有的内容。

G

把暂存缓冲区的内容追加到模式空间里,追加在原有内容的后面。

l

列出非打印字符。

p

打印行。

n

读入下一输入行,并从下一条命令而不是第一条命令开始对其的处理。

q

结束或退出 sed。

r

从文件中读取输入行。

!

对所选行以外的所有行应用命令。

s

用一个字符串替换另一个。

g

在行内进行全局替换。

w

将所选的行写入文件。

x

交换暂存缓冲区与模式空间的内容。

y

将字符替换为另一字符(不能对正则表达式使用y命令)。

Linux sed命令常用实例

实例

实例

描述

sed -n ‘3p’ file

打印文件 file 的第三行内容

sed -n ‘n1,n2p’ file

打印文件 file 的第 n1 行到 n2 行的内容

sed -n ‘/str1/,/str2/p’ file

显示文件 file 中包含 str1 的行到包含 str2 的行之间的行

sed -n ‘/str/p’ file

显示文件 file 中匹配字符串 str 的行

sed ‘s/str1/str2/g’ file

将文件 file 中所有的 str1 替换为 str2,不写入文件

sed -i ‘s/str1/str2/g’ file

将文件 file 中所有的 str1 替换为 str2,并写入文件

sed -e ‘1i str1’ -e ‘$a str2’ file

在文件 file 的第一行添加 str1,文件 file 结尾添加 str2

sed ‘1,4i str’ file

在文件第一行和第四行的每行下面添加 str

sed ‘s/world/hello_&/g’ file

& 符号在 sed 命令中代表上次匹配的结果,这里表示将 world 替换为 hello_word

sed ‘3,9d’ file

删除文件的第三行到第九行

sed ‘/str1/,/str2/d’ file

删除 file 中包含 str1 到包含 str2 的行

sed ‘5,10 s/str1/str2/g’ file

将文件的第五行到第十行的所有的 str1 替换为 str2

sed -n -e ‘3,6p’ -e ‘s/str1/str2/g’ file

打印 3 到 6 行的内容,并匹配 str1 替换为 str2

打印文件的第N行

语法

sed -n '3p' file

案例

我们使用 sed 命令,查看文件 /etc/passwd 的第五行内容,具体命令如下:

sed -n '5p' /etc/passwd

运行后,终端输出如下:

da0b0c5ea3fa73a77b0b6ee12f68c622.png

我们看到,我们使用了 sed 命令,打印了文件的第五行的内容。

打印文件的第N1行到第N2行

语法

sed -n 'n1,n2p' file

案例

我们使用 sed 命令,查看文件 /etc/passwd 的第 5 行到第 8 行的内容,具体命令如下:

sed -n '5,8p' /etc/passwd

运行后,终端输出如下:

f2b9a2404e35c74e48e371226200d8f4.png

我们看到,我们使用了 sed 命令,打印了文件的第五行到第八行的内容。

打印文件包含字符串的行

语法

sed -n '/str1/,/str2/p' file

案例

我们使用 sed 命令,查看文件 /etc/passwd 中包含指定字符串的行到指定字符串行的内容,具体命令如下:

sed -n '/tcpdump/,/adm/p' /etc/passwd

运行后,终端输出如下:

0b6735b09844cb24e0db39d06fce3339.png

我们看到,我们使用了 sed 命令,打印了文件中包含 tcpdump 和包含 adm 的行之间的内容。

打印文件中匹配字符串的行

语法

sed -n '/str/p' file

案例

我们使用 sed 命令,查看文件 /etc/passwd 中包含指定字符串的内容,具体命令如下:

sed -n '/root/p' /etc/passwd

运行后,终端输出如下:

8a21ca86fa28a7047ac313e247474281.png

我们看到,我们使用了 sed 命令,打印了文件中包含 root 的行。

替换字符串

语法

sed 's/str1/str2/g' file

案例

我们使用 sed 命令,查看文件 /etc/passwd 中的内容,并将 str1 替换为 str2,具体命令如下:

sed 's/root/super/g' /etc/passwd

运行后,终端输出如下:

1679e1c90cfb064feb4d213ea811e7bc.png

我们看到,我们使用了 sed 命令,将文件中所有的 root 替换为了 super。

删除行

语法

sed '3,9d' file

案例

我们使用 sed 命令,删除文件 /etc/passwd 的第三行到第二十七行,具体命令如下:

sed '3,27d' /etc/passwd

运行后,终端输出如下:

31776f98c776e8a260e68523a26c439f.png

我们看到,我们使用了 sed 命令,删除了文件的第三行到第二十七行。

Linux文件处理sed命令详解总结

Linux 中的 sed 是一种流编编器,用来对文本进行过滤与替换操作,同时,sed 命令能够完美的配合正则表达式使用。

Linux sed 命令处理时,把当前处理的行存储在临时缓冲区中,称为 ”模式空间”( oattern space),接看用 sed 命令处理缓冲区中的内容,处理成后,把缓冲区的内容送往屏幕显示。

注意,sed 默认不会直接修改源文件数据,而是会将数据复制到缓冲区中,修改也仅限于缓冲区中的数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值