linux中sed命令,linux sed命令详解

linux之文本内容替换命令sed

sed简介:流编辑工具,用来对文本进行过滤与替换操作。

成都创新互联是专业的罗庄网站建设公司,罗庄接单;提供成都网站建设、成都网站设计,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行罗庄网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

sed流程:sed通过一次仅读取一行内容来对某些指令进行处理后输出。

1、sed通过文件或管道读取文件内容,但sed默认并不直接修改源文件,而是将读入的内容复制到缓冲区中,称之为模式空间。

2、所有的指令操作都是在模式空间找那个进行

3、sed根据相应的指令对模式空间中的内容进行处理并输出结果,默认输出至标准输出(即屏幕上)。

sed基本语法格式:

用法:sed[选项]...{脚本指令}[输入文件]...

选项: -version 显示sed版本

-help :显示帮助文档

-n,-quiet,-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 最低限度的缓存输入与输出

a,append表示追加指令;

i,insert表示插入指令;

d,delete表示删除指令;

s,substitution表示替换指令。

sed脚本指令的基本格式是:

[地址,即路径]命令(有些命令仅可以对一行操作,有些可以对多行操作),命令也可以用花括号进行组合,使命令序列可以作用于同一个地址。

address{

command1

command2

command3

}

sed的基本工作方式是:

sed的替换命令s:

1、全局替换 : s/old/new/g ,其中g为全局替换,用于替换所有出现的次数; /如果和正则匹配的内容冲突可以使用其他符号,如 : s@old@new@g

2、标志位

为什么要有多行模式: 配置文件一般有单行出现,但也有使用json或XML格式的配置文件,为多行出现。

多行模式处理命令N、D、P

Linux命令之sed-删除匹配行

1. sed -i '/preSql/d' a.txt

---删除匹配到 preSql的行

2. sed -i '1d' a.txt

---删除第一行

3. sed -i '3~2d' a.txt

---从第三行开始,每隔一行删除

4. sed -i '4,8d' a.txt

---删除从第4行到第8行

5. sed -i '$d'  a.txt

---删除最后一行

6. sed '/^$/d' a.txt

---删除所有空行

7. sed -i  '/Website Design/,$d' a.txt

---从匹配行到末尾行

8. sed -i  '/Storage/,+2d' a.txt

--- 删除匹配行和之后两行

Linux里面sed和awk命令哪个重要?

你好很高兴回答您的问题:

既然接触到了三剑客的sed和awk,对Linux应该是有些认知了吧.下面基于这个给您介绍下.

Linux的秘籍三剑客 grep,sed,awk 是Linux命令,甚至是shell编程部分的核心技术.

掌握与数量可以加速处理文本速度.

grep擅长过滤与正则

sed擅长替换与增删改查

awk擅长统计计算与取行取列

快收下下面的宝典修炼吧.

Linux中的sed是什么意思呢,简单解释一下啊

Sed是一项Linux指令,全称是Stream

EDitor,功能同awk类似,差别在于,sed简单,对列处理的功能要差一些,awk的功能复杂,对列处理的功能比较强大。Sed主要用于自动编辑一个或者多个文件,多用于脚本中对文件的处理。

Sed命令可以对文件进行增加、删除、修改和查找操作,所以学好sed命令是写自动化脚本必须的基础之一。

关于Linux里的sed命令。

Sed

is

a

nondestructive

editor.

It

will

display

the

edits

you

make

on

your

screen,

but

it

will

not

change

the

file

you

are

editing.

To

really

reflect

the

edits

in

the

file,

you

must

redirect

the

output

to

another

file,

and

then

rename

the

orginal

file

sed的特点就是非破坏(nondestructive),流水行(streamlined),非交互(noninteractive)的编辑器。

非破坏就是指不会修改原文件,它会将修改的结果标准输出到屏幕上,你如果想保存,需要使用IO重定向的方式保存:

如:

sed

‘s/home/home1’

1.txt

2.txt

这样做的原因是,如果你修改了原文件的话,你没法使用word,vim,txt的undo功能撤销修改,恢复原来的文件。所以,sed会将修改之后的文件输出到屏幕,你看到修改满意的话,再重定向到其他文件。就完成了修改。明白否?

-e是启用多行命令

上述两条编辑命令都是一行命令,所以看不出效果。

Linux中sed命令同awk命令有什么区别呢,具体该如何使用呢?

sed 多用来编辑修改

awk 多用来打印

sed grep awk 俗称三剑客

使用上sed 和 awk扩展下来,内容可多了,甚至awk可以被当作一种脚本工具,单独出书,sed简单的用法增删改查都是可以直接百度到的,awk的打印也是。

例如 sed中

s 替换

sed 's/zhangsan/lisi/' yourfile 就是将zhangsan替换为lisi ,打印不执行

加上i后才真正执行 sed -i 's/zhangsan/lisi/' yourfile

d 删除

sed '/zhangsan/d' yourfile

sed -i '/zhangsan/d' yourfile

a 追加

sed -i '/zhangsan/alisi' yourfile

i 前插

sed -i '/zhangsan/ilisi' yourfile

p 打印

sed -n '/zhangsan/p' yourfile

因为它本身也会打印一般,所以加 -n 不默认打印

awk

-F 指定分隔符

awk -F ':' '/^root/{print $7}' /etc/passwd

打印以 root开头所在行,以“:”为分隔符,打印第七列

其效果就是打印了root的shell

纯手打,望采纳,谢谢,遇到具体问题仍可继续交流


分享文章:linux中sed命令,linux sed命令详解
文章来源:http://azwzsj.com/article/dssdcjj.html