LINUX命令-sed

linux,sed · 浏览次数 : 0

小编点评

本文介绍了sed命令的基本格式和常用操作,以及通过练习文件加深了对sed命令的理解。sed是一个功能强大的文本处理工具,可以用于对文本文件进行增删改查等操作。文章首先列举了sed命令的基本格式,包括选项、参数和操作说明。接着,通过具体的例子展示了如何使用sed命令进行各种文本操作。最后,总结了sed命令的常见用法,并指出在应用时需要注意的事项。 1. **基本格式**:文章首先介绍了sed命令的基本格式,包括选项、参数和操作说明。其中,-h选项用于查看帮助信息,-V选项用于显示版本信息,-n选项用于不输出修改后的文件内容,而只显示处理后的结果。-i选项用于直接对原始文件进行修改。 2. **常用操作**:文章通过例子展示了sed命令的常用操作,包括: - 使用a命令在指定行后添加字符串 - 使用c命令替换指定行或指定范围的字符串 - 使用d命令删除指定行或指定范围的行 - 使用p命令打印指定行或指定范围的行 - 使用s命令替换指定范围内的一行或多行字符串 3. **综合练习**:文章还提供了一系列的练习,让读者通过实际操作来加深对sed命令的理解。这些练习涵盖了新增、替换、删除等多种操作,并展示了如何使用-n选项来控制输出的行数,以及如何使用-c选项来精确地执行替换操作。 4. **总结与注意事项**:文章最后总结了sed命令的常见用法,并指出了在实际应用中需要注意的事项。例如,使用-i参数可以直接对原始文件进行修改,而无需先输出修改后的内容;在使用s命令进行替换时,要确保正则表达式正确匹配到目标字符串;在操作多行时,要注意正则表达式的边界问题。 总的来说,文章通过详细的介绍和实例演练,使读者能够全面掌握sed命令的基本操作和常用技巧,从而在文本处理任务中更加得心应手。

正文

本文编辑小绝技-sed

sed命令是用于对文本文件做内容操作的神器,常见的增删改都可以,查没必要用它,用grep或者gvim打开用vim的搜索匹配就行。

sed 命令的基本格式如下:

sed -hnVi 'action'

或者

sed -e expression

参数说明:

参数 含义及用法
-h help
-V version,版本信息
-i sed命令默认是将做的修改输出到终端中,并不对原始文件做修改,而-i参数后边的‘action’将直接对原始文件做修改,所以这招慎用。
-n sed命令默认会将修改后文件的全部内容输出,-n则仅显示处理后的结果
-e 前边几个action要放在‘’里,而加-e则不需要了,直接写你的expression

动作说明:

动作 作用及用法
a 新增,会将a后的字符串在目的对象或者目的行的下一行增加,用法: 目的对象/目的行a\newline 目的file。注意a后边要跟反斜杠
c 替换,可以将目的对象或者目的行替换为c后边的字符串。用法:目的行/目的对象c\替换字符串 目的file
d 删除,将目的行目的对象删除。用法:目的对象/目的行d 目的file。d后边不跟任何东西。
i 插入,在目的对象/目的行上一行插入字符串,用法基本同a。
p 打印,将目的对象目的行打印出来,同样p后不跟任何东西,常和-n参数一起用。
s 替换,最最常用的,将目的范围行内的oldlstr替换为newstr。

目的行,目的范围说明:

n 第n行
n1,n2 n1到n2行
^ 行首,多用在替换时正则匹配中
$ 尾行;如果用在s的正则匹配中,代表行尾
1 首行

目的对象说明:

目的对象及你想操作的目的字符串,可以用正则匹配,用两个斜杠左右包围:

/目的对象或者目的字符串,可用正则匹配/

下面是举了若干例子来练习,注意因为下面的练习都没加-i参数,所以都不是对原始文本直接做的修改,而是全部都输出到terminal上,同学们在应用时如果需要下面的操作都直接对原始文本做修改,sed后跟上 -i 参数就可以啦。

测试文件内容如图:

1.在第二行到第四行每行下边增加一行字符串“input [:]”

用-e的话就不用加‘’了

2.在首行前插入一行字符串“the lord ring”

3.删除整个文本中中间有空格的行,以及删除第三行到第五行之间的空格(就这个测试文件来说,其实就相当于删除全文的空格啦)

删除有空格的行:

删除第三行到第五行之间的空格,其实就是用s替换,将空格替换掉:

4.打印第6行,分别使用-n和不-n查看他们的差别

不-n

用-n

5.将3到4行替换为“new new”

6.查找并打印含有”wo“的行,并比较-n 和不 -n的差别

不-n

用-n

7.分别使用c动作和s动作,查找“wo”字符串并替换为“input [:]”

用c替换,由图可知,用c替换时将整个一行都替换掉了。

用s替换,由图可知s替换是只替换匹配到的字符。

8.$的使用,删除尾行;将ing结尾的替换为ed结尾

删除尾行

ing结尾替换为ed结尾


通过这些练习相信sed的常见用法你已经基本掌握了,不管是写shell脚本还是在terminal中提升自己的处理速度都很有用。

与LINUX命令-sed相似的内容:

LINUX命令-sed

sed命令是用于对文本文件做内容操作的神器,常见的增删改都可以,熟练运用可提高shell脚本编写能力和在terminal下的工作效率。

[转帖]linux删除文本文件空白行

https://zhuanlan.zhihu.com/p/627152095 sed命令 在Linux中,可以使用sed命令批量删除文本中的空白行。以下是一个示例命令: sed -i '/^$/d' filename.txt 这个命令将会删除 filename.txt 文件中所有的空白行,并且直接在

[转帖]linux删除文本文件空白行

linux删除文本文件空白行https://www.zhihu.com/people/chen-kai-84-54-75 sed命令 在Linux中,可以使用sed命令批量删除文本中的空白行。以下是一个示例命令: sed -i '/^$/d' filename.txt 这个命令将会删除 filena

[转帖]Linux脚本-sed命令在文本首行和尾行插入空行

@Linux脚本-sed命令在文本首行和尾行插入空行 Linux脚本-sed命令在文本首行和尾行插入空行 演示如下: 首先创建需要操作的文本文件 //create a file containing string on ubuntu 20.04 terminal touch shell gedit

[转帖]如何使用 sed 命令删除文件中的行

https://zhuanlan.zhihu.com/p/80212245 sed 命令是 Linux 中的重要命令之一,在文件处理方面有着重要作用。可用于删除或移动与给定模式匹配的特定行。-- Magesh Maruthamuthu(作者) Sed 代表 流编辑器(Stream Editor),常

[转帖] Linux命令拾遗-文本处理篇

https://www.cnblogs.com/codelogs/p/16060413.html 简介# 这是Linux命令拾遗系列的第二篇,本篇主要介绍Linux中与文本处理相关的命令,如xargs、grep、sed、awk等。 本系列文章索引Linux命令拾遗-入门篇 常用文本相关命令# cat

[转帖]Linux常用命令:利用sed命令删除文件的特定行

http://www.dbs724.com/12806.html 前言 正常来说,我们想要删除文件中的某些行内容,一般都是先打开这个文件,然后找到要删除的内容,再然后选中这些行并按删除键进行删除,这在数据量很少时是没有问题的。但是,一旦文件中的行数据非常多,而且数据冗杂的情况下,你还要用上面的方法去

Linux:管道命令与文本处理三剑客(grep、sed、awk)

众所周知,bash命令执行的时候会输出信息,但有时这些信息必须要经过几次处理之后才能得到我们想要的格式,此时应该如何处置?这就牵涉到 管道命令(pipe) 了。管道命令使用的是|这个界定符号。每个管道后面接的第一个数据必定是命令,而且这个命令必须要能够接受标准输出的数据才行,这样的命令才可为管道命令。接下来我们选取grep、sed、awk这三个用于文本处理的管道命令来进行介绍。这三个命令可谓是Li

[转帖] Linux文本命令技巧(上)

Linux文本命令技巧(上) 原创:打码日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处。 简介# 前一篇我介绍了awk,这是一个全能的文本处理神器,因为它本身就是一门编程语言了,但对于很多场景,使用Linux预设的一些文本处理命令,会更方便快捷,如grep、sed等。本篇就来介绍

分享一个提高运维效率的 Python 脚本

哈喽大家好我是咸鱼,今天给大家分享一个能够提升运维效率的 python 脚本 咸鱼平常在工作当中通常会接触到下面类似的场景: 容灾切换的时候批量对机器上的配置文件内容进行修改替换 对机器批量替换某个文件中的字段 对于 Linux 机器,咸鱼可以写个 shell 脚本或者直接批量使用 sed 命令就能