📜  sed 到第一个匹配 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 14:47:21.530000             🧑  作者: Mango

sed 到第一个匹配 - Shell-Bash

Sed 是一个在 Linux 中广泛使用的流编辑器,可以用它来处理文本。s 指令是 sed 中用来替换文本的命令之一。在文本中找到第一个匹配的字符串并替换成指定的字符串。

语法
sed 's/要搜索的字符串/替换成的字符串/' filename
参数说明:
  • s: 表示用 sed 中的 s 命令来替换文本。
  • 要搜索的字符串: 要在文件中查找的字符串。
  • 替换成的字符串:将要用来替换搜索到的字符串的字符串。
  • filename: 要匹配的文件。
例子

在示例文件 test.txt 中,查找第一个匹配的 hello 并替换为 world

$ cat test.txt
hello world
hello there
hello world again
$ sed 's/hello/world/' test.txt
world world
hello there
hello world again
使用正则表达式匹配

可以使用正则表达式匹配更具体的字符串:

$ cat test.txt
hello123 world
hello there
hello world again
$ sed 's/hello[0-9]\+/world/' test.txt
world world
hello there
hello world again

此例使用正则表达式 [0-9]\+ 来匹配一个或多个数字,用来更具体地替换目标字符串。

操作文件本身

默认情况下,sed 不会修改文件本身,而是在执行时输出到标准输出。如果要在原始文件中修改,请结合 -i 参数使用:

$ cat test.txt
hello world
hello there
hello world again
$ sed -i 's/hello/world/' test.txt
$ cat test.txt
world world
world there
world world again
总结

Sed 是一个非常强大的文本编辑工具,在 Linux 中广泛使用。使用 s 命令可以查找并替换目标字符串,而使用正则表达式可以更精确地匹配目标字符串。在执行时,sed 默认不修改原始文件,如果要修改原始文件,必须添加 -i 参数。