首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux 中的 Sed 命令及 16 个实际示例

该`sed`命令是在 Linux 中操作文本的必备工具。它允许您搜索文本中的模式并对匹配的文本执行各种操作,例如替换、删除或打印。该命令从文件或标准输入获取输入。

默认 sed 命令不会对原始文件进行更改,直到您使用-i命令行参数。该命令发出警报文本并将结果发送到标准输出。您还可以根据要求将文本重定向到文件。

在本文中,我们将提供 16 个使用该`sed`命令执行各种任务的实际示例。

使用 Sed 替换字符串示例

1.替换文件中的字符串

要替换文件中的字符串,可以使用该's/old_string/new_string/g'命令。语法

sed 's/old_string/new_string/g' file_name

此命令读取“fruits.txt”文件中的内容,并将所有出现的单词“apple”替换为

要使用 sed 命令替换文件中的字符串,请使用-i参数就地进行更改。命令字符串必须包含替换命令's'、原始字符串和替换字符串。例如,要将名为fruits.txt的文件中字符串“apple”的所有实例替换为字符串“banana”,请使用以下命令:

请参见以下示例:

sed's/apple/banana/g' fruits.txt

此命令读取“fruits.txt”文件中的内容,并将所有出现的单词“apple”替换为单词“banana”,并将结果文本打印到终端。告诉g命令全局替换文件中的所有匹配项。

您还可以使用该选项在同一文件中进行更改-i

sed -i's/apple/banana/g' fruits.txt

您将看到原始文件已被修改。您还可以在更改原始文件之前先备份文件。

sed -i.bak's/apple/banana/g' fruits.txt

2. 替换每行第一次出现的位置

要仅替换每行中第一次出现的模式,可以使用s/pattern/replacement/命令。例如,要仅将文件fruits.txt中第一次出现的单词“apple”替换为单词“banana”,可以使用以下命令:

sed's/apple/banana/' fruits.txt

3.替换每行最后出现的地方

要仅替换每行中最后一次出现的模式,可以使用“s/pattern/replacement/g”命令。例如,要仅将文件fruits.txt中最后一次出现的单词“apple”替换为单词“banana”,可以使用以下命令:

sed's/\(.*\)apple/\1banana/g' fruits.txt

4. 替换特定行号处的字符串

要替换特定行上的字符串,可以使用lineNumbers/pattern/replacement/命令。例如,要将文件fruits.txt第3行中第一次出现的单词“apple”替换为单词“banana”,您可以使用以下命令:

sed'3s/apple/banana/' fruits.txt

5. 替换行号范围内的字符串

要替换一系列行上的字符串,可以使用startLineNumber,endLineNumber/pattern/replacement/命令。例如,要将文件fruits.txt第3行至第5行中第一次出现的单词“apple”替换为单词“banana”,您可以使用以下命令:

sed'3,5s/apple/banana/' fruits.txt

使用 Sed 删除文件中的行

6. 删除文件第一行

要删除包含特定字符串的行,可以使用/pattern/d命令。例如,要删除文件fruits.txt中包含单词“apple”的所有行,可以使用以下命令:

sed '1d'fruits.txt

7.删除包含特定字符串的行

要删除包含特定字符串的行,可以使用“/pattern/d”命令。例如,要删除文件fruits.txt中包含单词“apple”的所有行,可以使用以下命令:

sed'/apple/d' fruits.txt

8. 删除除匹配字符串之外的行

要反转匹配行,可以将`!`运算符与其他命令结合使用。例如,要删除文件fruits.txt中包含单词“apple”的所有行,可以使用以下命令:

sed'/apple/!d' fruits.txt

9.删除行范围

要删除一系列行,可以使用该startLineNumber,endLineNumberd命令。例如,要删除文件fruits.txt的第3行到第5行,您可以使用以下命令:

sed '3,5d'fruits.txt

10.删除文件中的空行

您可以使用选项从文件中删除空行'/^$/d'。

sed'/^$/d' fruits.txt

此命令将一行视为空行,不包含任何字符,甚至一个空格。

使用 Sed 从文件中打印行

11.仅打印行号

要仅打印匹配行的行号,可以使用“/pattern/=”命令。例如,要打印文件fruits.txt中包含单词“apple”的所有行的行号,可以使用以下命令:

sed'/apple/=' fruits.txt

12.打印文件范围

要打印一系列行,可以使用“start,endp”命令。例如,要打印文件fruits.txt的前10行,可以使用以下命令:

sed -n'1,10p' fruits.txt

使用 Sed 将行插入文件

13. 匹配模式后插入新行

要在特定模式后插入一行,可以使用“/pattern/a\newline”命令。例如,要在文件fruits.txt中包含单词“apple”的行后面插入行“grapes”,可以使用以下命令:

sed'/apple/a\grapes' fruits.txt

14. 在匹配模式之前插入新行

要在特定模式之前插入一行,可以使用“/pattern/i\newline”命令。例如,要在文件fruits.txt中包含单词“apple”的行之前插入行“grapes”,可以使用以下命令:

sed'/apple/i\grapes' fruits.txt

使用 Sed 的其他任务

15. 更改字符大小写

要更改字符串的大小写,可以使用“y/old/new/”命令。例如,要将文件fruits.txt中的所有小写字母更改为大写,可以使用以下命令:

sed'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' fruits.txt

16. 替换特定字符之间的内容

例如,要将文件fruits.txt中的所有mysql –h 127.0.0.1-uroot -P3306 -p654321地址替换为 192.168.2.12,可以使用以下命令:

sed "s/^mysql-h .* -u\>/mysql -h 192.168.2.12 -u/g" fruits.txt

结论

我们希望这些示例有助于向您展示 sed 命令的多功能性。请记住,sed 是一个非常强大的工具,在对重要文件使用命令之前仔细测试命令非常重要。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OgCy63g4SPFtDcjCYIR6ZZxA0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券