学习Linux必备:30个常用sed指令 (linux 常用sed指令)

Linux作为一款开源操作系统,越来越受到人们的欢迎。而作为Linux的核心要素之一的命令行,sed命令在其中的重要程度也不容小觑。在本文中,我们将为大家介绍30个常用的sed指令,以帮助大家更加轻松地学习和使用Linux。

一、sed是什么?

sed是“stream editor”的缩写,用于在纯文本文件中进行替换、删除、插入等操作。它可以在命令行中使用,也可以在脚本中被调用。sed的一大优势就是它只作用于所选定的文本行。

二、基本语法

sed的基本语法格式如下:

“`

sed [options] ‘command’ [file]

“`

其中,options和file是可选参数,command是必选参数。command可以是一系列对文本的操作命令,如替换、删除、插入等。

三、30个常用的sed指令

1. 替换字符串

替换字符串是sed的一个基本操作,它可以在指定的文本行中将一部分字符串替换成另一部分字符串。比如:

“`

$ sed ‘s/old/new/g’ file.txt

“`

以上命令表示将文件file.txt中的所有old替换成new,g表示一行中出现多次需要替换的字符串时都进行替换。

2. 替换指定行

如果要只在文件的某些行中进行替换,则可以使用标号来限定行号的范围,比如:

“`

$ sed ‘2s/old/new/g’ file.txt

“`

以上命令表示将文件file.txt中的第二行中的old替换成new。

3. 只替换匹配的字符串

如果希望只替换满足某些条件的字符串,则可使用正则表达式来过滤匹配的文本。比如:

“`

$ sed ‘/^To/s/old/new/g’ file.txt

“`

以上命令表示只将以To开头的行中的old替换成new。

4. 在行末添加文字

使用sed命令可以在行末添加文字。比如:

“`

$ sed ‘s/$/new/’ file.txt

“`

以上命令表示在文件file.txt中的每行行末添加new。

5. 删除指定行

若要删除文件中的指定行,可以使用d命令。比如:

“`

$ sed ‘2d’ file.txt

“`

以上命令表示删除文件file.txt中的第二行。

6. 删除特定字符串

若要删除指定文本行中的字符串,可以使用s命令(替换命令)。比如:

“`

$ sed ‘s/old//g’ file.txt

“`

以上命令表示删除文件file.txt中的所有old字符串。

7. 替换逗号为|

用sed命令也可以进行逗号和竖线的转换。比如:

“`

$ sed ‘s/,/|/g’ file.csv > newfile.csv

“`

以上命令表示将文件file.csv中的逗号替换成竖线,并将结果写入newfile.csv中。

8. 在特定行之后添加新行

在特定行的下面添加新行是一个常见的需求。使用sed命令,只需将行号指定到后面并添加文本即可,比如:

“`

$ sed ‘2a\add a new line’ file.txt

“`

以上命令表示在文件file.txt的第二行下添加一行“add a new line”。

9. 添加注释

如果需要在文件的某些位置添加注释,只需使用#号即可。比如:

“`

$ sed ‘2a\# add a comment’ file.txt

“`

以上命令表示在文件file.txt的第二行下添加一行注释“# add a comment”。

10. 删除多余的空白行

批量清除空白行是使用sed命令的常见任务之一,例如:

“`

$ sed ‘/^$/d’ file.txt

“`

以上命令表示删除文件file.txt中的所有空白行。

11. 行首插入文字

插入特定文本到行首也是sed命令可以完成的任务之一,例如:

“`

$ sed ‘s/^/add text to the begining: /’ file.txt

“`

以上命令表示在文件file.txt中的每行行首添加“add text to the begining:”。

12. 将指定范围内的行合并为一行

将多行文本合并为一行也是一种相当实用的任务。sed命令可以通过使用N命令来实现,例如:

“`

$ sed -n ‘1,3H; 4,$ { x; s/\n/ /g; p}’ file.txt

“`

以上命令表示将1至3行的内容合并到一个缓冲区后,在第4行及之后的行中,将所有换行符替换成空格,并将结果输出。

13. 对行进行编号

在对Linux命令行进行某些操作时,经常需要对行进行编号。可以使用以下命令:

“`

$ sed = file.txt | sed ‘N; s/\n/\t/’

“`

以上命令表示对文件file.txt进行行号编号,并在行号与行内容之间加上一个制表符(/t)。

14. 抽取指定行

抽取文件中的特定行可使用如下命令:

“`

$ sed -n ‘1p’ file.txt

“`

以上命令表示抽取文件file.txt中的之一行。

15. 批量添加行号

如果需要批量添加行号,则可以使用如下命令:

“`

$ sed = file.txt | sed ‘N;s/\n/\t/;’

“`

以上命令表示将文件file.txt的文本行编号并用制表符分隔行号和行内容。

16. 删除指定范围内的所有行

如果需要删除文件中的指定行,可以使用如下命令:

“`

$ sed ‘1, 5d’ file.txt

“`

以上命令表示删除文件file.txt中的第1至5行。

17. 删除指定匹配的行

如果需要删除指定文本中的某些行,可以使用如下命令:

“`

$ sed ‘/text/d’ file.txt

“`

以上命令表示删除文件file.txt中包含文本“text”的所有行。

18. 批量替换字符串

批量替换字符串可以使用如下命令:

“`

$ sed ‘s/text1/text2/g’ file.txt > newfile.txt

“`

以上命令表示将文件file.txt中的所有text1替换成text2并将结果写入newfile.txt。

19. 批量插入空白行

与批量删除空白行相比,批量插入空白行也是一个常见需求,可以使用如下命令:

“`

$ sed G file.txt

“`

以上命令表示在文本file.txt的每一行之后添加一行空行。

20. 批量添加特定内容

在文件中批量添加特定内容,可以使用如下命令:

“`

$ sed ‘1i\ add a new line at the beginning’ file.txt

“`

以上命令表示在文件file.txt的之一行之前添加一行文本“add a new line at the beginning”。

21. 删除字符串末尾的空格

删除字符串末尾的空格也是通过sed命令实现的,比如:

“`

$ sed ‘s/[ \t]*$//’ file.txt

“`

以上命令表示删除文件file.txt中每一行末尾的空格和制表符。

22. 删除双引号

删除文件中的双引号也是常见的需求之一,可以使用如下命令:

“`

$ sed ‘s/”//g’ file.txt

“`

以上命令表示删除文件file.txt中出现的所有双引号。

23. 删除行尾的逗号

删除行尾逗号也可以使用sed命令实现,比如:

“`

$ sed ‘s/,$//’ file.txt

“`

以上命令表示删除文件file.txt中每行末尾的逗号。

24. 合并行

合并文本文件中的两行可以使用如下方式:

“`

$ sed ‘N;s/\n/ /’ file.txt

“`

以上命令表示将文件file.txt中每两行合并为一行。

25. 快速编辑文件

sed命令可以使用户快速编辑大型文本文件,例如:

“`

$ sed -i ‘s/text1/text2/g’ file.txt

“`

以上命令表示将文件file.txt中所有的text1替换成text2。使用-i选项可使sed命令直接编辑源文件,不需使用额外的输出文件。

26. 批量删除每行行首的空格

批量删除每行行首的空格也是常见的需求之一,可以使用如下命令:

“`

$ sed ‘s/^[ \t]*//’ file.txt

“`

以上命令表示删除文件file.txt中每行开头多余的空格和制表符。

27. 使用正则表达式查找和替换

使用sed命令可以使用正则表达式进行查找和替换,例如:

“`

$ sed ‘s/[0-9]*//g’ file.txt

“`

以上命令表示删除文件file.txt中的所有数字。

28. 删除指定范围内的行

如果需要删除特定范围内的行,可以使用如下命令:

“`

$ sed ‘2,4d’ file.txt

“`

以上命令表示删除文件file.txt中的第2至4行。

29. 批量添加特定文本

在对批量文本进行操作时,添加特定文本可以使用如下命令:

“`

$ sed ‘s/^/new text: /’ file.txt

“`

以上命令表示在文件file.txt中的每行行首添加“new text: ”。

30. 替换指定范围内的行

如果需要在指定的范围内替换文本,则可以使用如下命令:

“`

$ sed ‘2,$ s/text1/text2/g’ file.txt

“`

以上命令表示在文件file.txt中的第2行及之后的所有行中将文本text1替换成text2。

综上,sed指令是Linux命令行中不可或缺的一部分。本文介绍了30个较为实用的sed指令,希望读者能够在日常的工作中灵活运用sed命令,提高自己的工作效率。


数据运维技术 » 学习Linux必备:30个常用sed指令 (linux 常用sed指令)