终端命令cd什么意思_linux终端命令_终端命令怎么停止

sed命令主要用于替换一个文件中的文本。

--MageshMaruthamuthu(作者)

当你在使用文本文件时,很可能须要查找和替换文件中的字符串。sed命令主要用于替换一个文件中的文本。在Linux中这可以通过使用sed命令和awk命令来完成。

在本教程中,我们将告诉你使用sed命令怎么做到这一点,之后讨论讨论awk命令相关的。

sed命令是哪些

sed命令表示StreamEditor(流编辑器),拿来在Linux上执行基本的文本操作。它可以执行各类功能linux终端命令,如搜索、查找、修改、插入或删掉文件。

据悉,它也可以执行复杂的正则表达式匹配。

它可用于以下目的:

本文列举的十五个反例可以帮助你把握sed命令。

假如要使用sed命令删掉文件中的行linux终端命令,去下边的文章。

注意:因为这是一篇演示文章,我们使用不带-i选项的sed命令,该选项会在Linux终端中删掉行并复印文件内容。

然而,在实际环境中假如你想删掉源文件中的行linux格式化命令,使用带-i选项的sed命令。

常见的sed替换字符串的句型。

linux终端命令_终端命令cd什么意思_终端命令怎么停止

sed -i 's/Search_String/Replacement_String/g' Input_File

首先我们须要了解sed句型来做到这一点。请参阅有关的细节。

让我们来瞧瞧文件中用sed命令来搜索和转换文本的一些常用事例。

我们早已创建了用于演示的以下文件。

# cat sed-test.txt
1 Unix unix unix 23
2 linux Linux 34
3 linuxunix UnixLinux
linux /bin/bash CentOS Linux OS
Linux is free and opensource operating system

1)怎样查找和替换一行中“第一次”模式匹配

下边的sed命令用linux替换文件中的unix。这仅仅改变了每一行模式的第一个实例。

# sed 's/unix/linux/' sed-test.txt
1 Unix linux unix 23
2 linux Linux 34
3 linuxlinux UnixLinux
linux /bin/bash CentOS Linux OS
Linux is free and opensource operating system

2)怎样查找和替换每一行中“第N次”出现的模式

在行中使用/1、/2……/n等标志来取代相应的匹配。

下边的sed命令在一行中用linux来替换unix模式的第二个实例。

# sed 's/unix/linux/2' sed-test.txt
1 Unix unix linux 23
2 linux Linux 34
3 linuxunix UnixLinux
linux /bin/bash CentOS Linux OS
Linux is free and opensource operating system

3)怎样搜索和替换一行中所有的模式实例

下边的sed命令用linux替换unix格式的所有实例,由于g是一个全局替换标志。

# sed 's/unix/linux/g' sed-test.txt
1 Unix linux linux 23
2 linux Linux 34
3 linuxlinux UnixLinux
linux /bin/bash CentOS Linux OS
Linux is free and opensource operating system

4)怎样查找和替换一行中从“第N个”开始的所有匹配的模式实例

下边的sed命令在一行中替换从模式的“第N个”开始的匹配实例。

# sed 's/unix/linux/2g' sed-test.txt
1 Unix unix linux 23
2 linux Linux 34
3 linuxunix UnixLinux
linux /bin/bash CentOS Linux OS
Linux is free and opensource operating system

5)在特定的行号搜索和替换模式

你可以替换特定行号中的字符串。下边的sed命令用linux仅替换第三行的unix模式。

# sed '3 s/unix/linux/' sed-test.txt
1 Unix unix unix 23
2 linux Linux 34
3 linuxlinux UnixLinux
linux /bin/bash CentOS Linux OS
Linux is free and opensource operating system

6)在特定范围行号间搜索和替换模式

你可以指定行号的范围,以替换字符串。

下边的sed命令在1到3行间用linux替换Unix模式。

# sed '1,3 s/unix/linux/' sed-test.txt
1 Unix linux unix 23
2 linux Linux 34
3 linuxlinux UnixLinux
linux /bin/bash CentOS Linux OS
Linux is free and opensource operating system

7)怎样查找和更改最后一行的模式

下边的sed命令准许你只在最后一行替换匹配的字符串。

下边的sed命令只在最后一行用Unix替换Linux模式。

# sed '$ s/Linux/Unix/' sed-test.txt
1 Unix unix unix 23
2 linux Linux 34
3 linuxunix UnixLinux
linux /bin/bash CentOS Linux OS
Unix is free and opensource operating system

8)在一行中怎样只查找和替换正确的模式匹配

你可能早已注意到,子串linuxunix被替换为在第6个示例中的linuxlinux。假如你只想更改正确的匹配词linux计划任务,在搜索串的两端用这个边界符b。

# sed '1,3 s/bunixb/linux/' sed-test.txt
1 Unix linux unix 23
2 linux Linux 34
3 linuxunix UnixLinux
linux /bin/bash CentOS Linux OS
Linux is free and opensource operating system

9)如何以不分辨大小写来搜索与替换模式

你们都晓得,Linux是分辨大小写的。为了与不分辨大小写的模式匹配,使用I标志。

# sed 's/unix/linux/gI' sed-test.txt
1 linux linux linux 23
2 linux Linux 34
3 linuxlinux linuxLinux
linux /bin/bash CentOS Linux OS
Linux is free and opensource operating system

10)怎样查找和替换包含分隔符的字符串

当你搜索和替换含分隔符的字符串时,我们须要用反斜杠来取消通配符。

在这个事例中,我们将用/usr/bin/fish来替换/bin/bash。

# sed 's//bin/bash//usr/bin/fish/g' sed-test.txt
1 Unix unix unix 23
2 linux Linux 34
3 linuxunix UnixLinux
linux /usr/bin/fish CentOS Linux OS
Linux is free and opensource operating system

上述sed命令按预期工作,但它看上去来很糟糕。为了简化,大部份的人会用竖线|作为正则表达式的定位符。所以,我建议你用它。

# sed 's|/bin/bash|/usr/bin/fish/|g' sed-test.txt
1 Unix unix unix 23
2 linux Linux 34
3 linuxunix UnixLinux
linux /usr/bin/fish/ CentOS Linux OS
Linux is free and opensource operating system

11)如何以给定的模式来查找和替换数字

类似地,数字可以用模式来取代。下边的sed命令以[0-9]替换所有数字为number。

# sed 's/[0-9]/number/g' sed-test.txt
number Unix unix unix numbernumber
number linux Linux numbernumber
number linuxunix UnixLinux
linux /bin/bash CentOS Linux OS
Linux is free and opensource operating system

12)怎样用模式仅查找和替换两个数字

假如你想用模式来取代两位数字,使用下边的sed命令。

# sed 's/b[0-9]{2}b/number/g' sed-test.txt
1 Unix unix unix number
2 linux Linux number
3 linuxunix UnixLinux
linux /bin/bash CentOS Linux OS
Linux is free and opensource operating system

13)怎样用sed命令仅复印被替换的行

假如你想显示仅修改的行,使用下边的sed命令。

# sed -n 's/Unix/Linux/p' sed-test.txt
1 Linux unix unix 23
3 linuxunix LinuxLinux

14)怎样同时运行多个sed命令

以下sed命令同时测量和置换两个不同的模式。

linux终端命令_终端命令怎么停止_终端命令cd什么意思

下边的sed命令搜索linuxunix和CentOS模式,用LINUXUNIX和RHEL8一次性更换它们。

# sed -e 's/linuxunix/LINUXUNIX/g' -e 's/CentOS/RHEL8/g' sed-test.txt
1 Unix unix unix 23
2 linux Linux 34
3 LINUXUNIX UnixLinux
linux /bin/bash RHEL8 Linux OS
Linux is free and opensource operating system

下边的sed命令搜索替换两个不同的模式,并一次性替换为一个字符串。

以下sed的命令搜索linuxunix和CentOS模式,用Fedora30替换它们。

# sed -e 's/(linuxunix|CentOS)/Fedora30/g' sed-test.txt
1 Unix unix unix 23
2 linux Linux 34
3 Fedora30 UnixLinux
linux /bin/bash Fedora30 Linux OS
Linux is free and opensource operating system

15)假如给定的模式匹配,怎么查找和替换整个行

假如模式匹配,可以使用sed命令用新行来取代整行。这可以通过使用c标志来完成。

# sed '/OS/ c
New Line
' sed-test.txt
1 Unix unix unix 23
2 linux Linux 34
3 linuxunix UnixLinux
New Line
Linux is free and opensource operating system

16)怎样搜索和替换相匹配的模式行

在sed命令中你可以为行指定适宜的模式。在匹配该模式的情况下,sed命令搜索要被替换的字符串。

下边的sed命令首先查找具有OS模式的行,之后用ArchLinux替换词组Linux。

# sed '/OS/ s/Linux/ArchLinux/' sed-test.txt
1 Unix unix unix 23
2 linux Linux 34
3 linuxunix UnixLinux
linux /bin/bash CentOS ArchLinux OS
Linux is free and opensource operating system

via:

作者:MageshMaruthamuthu选题:lujun9972译者:Asche910校对:wxy

本文由LCTT原创编译,Linux中国荣誉推出

Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复