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
原始文件的备份文件将在当前目录中创建,名称为fruits.txt.bak。
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 是一个非常强大的工具,在对重要文件使用命令之前仔细测试命令非常重要。
