使用 sed 处理字面量字符串而非输入文件


简介

Sed,是 Stream Editor 的缩写,是一个功能强大的命令行工具,用于操作和转换文本。它通常用于对输入文件执行操作,例如替换文本、删除行和插入新文本。但是,sed 也可以与字面量字符串而不是输入文件一起使用,这在某些情况下非常有用。在本文中,我们将讨论使用 sed 处理字面量字符串的不同方法,并探讨一些使用此功能的示例。

使用 -e 选项

使用 sed 处理字面量字符串最直接的方法是使用 -e 选项。此选项允许您直接在命令行上指定 sed 命令,而无需输入文件。例如,要替换字面量字符串中所有出现的“old”为“new”,您可以使用以下命令:

sed -e 's/old/new/g'

此命令将替换输入字符串中所有出现的“old”为“new”。您还可以使用多个 -e 选项对同一字符串执行多个操作。例如,要删除所有包含“old”的行并替换所有出现的“new”为“updated”,您可以使用以下命令:

sed -e '/old/d' -e 's/new/updated/g'

Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.

使用 -n 选项

使用 sed 处理字面量字符串的另一种方法是使用 -n 选项。此选项告诉 sed 仅打印与特定模式匹配的行。例如,要仅打印字面量字符串中包含“old”的行,可以使用以下命令:

sed -n '/old/p'

此命令将打印输入字符串中所有包含“old”的行。您还可以将 -n 选项与其他 sed 命令结合使用以执行更复杂的操作。例如,要删除所有包含“old”的行并仅打印其余行,您可以使用以下命令:

sed -n '/old/!p'

使用 echo 命令

使用 sed 处理字面量字符串的另一种方法是使用 echo 命令将字符串作为输入传递给 sed。例如,要替换字面量字符串中所有出现的“old”为“new”,您可以使用以下命令:

echo "This is an old string" | sed 's/old/new/g'

此命令将替换字符串“This is an old string”中所有出现的“old”为“new”并打印结果。您还可以将 echo 命令与其他 sed 命令结合使用以执行更复杂的操作。例如,要删除所有包含“old”的行并替换所有出现的“new”为“updated”,您可以使用以下命令:

echo "This is an old string. This is a new string." | sed '/old/d' | sed 's/new/updated/g'

使用定界符功能

使用 sed 处理字面量字符串的另一种方法是使用定界符功能。定界符是一种在脚本中包含文本块而不必将其写入文件的方法。例如,要替换字面量字符串中所有出现的“old”为“new”,您可以使用以下命令:

sed 's/old/new/g' <<< "This is an old string"

此命令将替换字符串“This is an old string”中所有出现的“old”为“new”并打印结果。<<< 运算符用于将字符串“This is an old string”作为输入传递给 sed。您还可以将定界符功能与其他 sed 命令结合使用以执行更复杂的操作。例如,要删除所有包含“old”的行并替换所有出现的“new”为“updated”,您可以使用以下命令:

sed '/old/d' <<< "This is an old string. This is a new string." | sed 's/new/updated/g'

使用 -i 选项

sed 中的 -i 选项允许我们直接编辑文件,而无需创建临时文件或将输出重定向到新文件。当我们想要更改文件但不想创建文件的副本时,这很有用。例如,要替换名为“file.txt”的文件中所有出现的“old”为“new”,您可以使用以下命令:

sed -i 's/old/new/g' file.txt

此命令将替换文件“file.txt”中所有出现的“old”为“new”并将更改保存到同一文件。但是,如果我们想将此功能与字面量字符串一起使用,则需要使用 echo 命令将字符串作为输入传递给 sed。例如,要替换字面量字符串中所有出现的“old”为“new”,您可以使用以下命令:

echo "This is an old string" | sed -i 's/old/new/g'

此命令将替换字符串“This is an old string”中所有出现的“old”为“new”并将更改保存到名为“-i”的文件中。

结论

在本文中,我们讨论了使用 sed 处理字面量字符串而非输入文件的不同方法。我们已经看到,sed 可以与 -e、-n、echo 和定界符功能以及 -i 选项一起使用。这些功能提供了一种灵活且强大的方法来操作和转换文本,无论它是存储在文件中还是作为命令行输入传递。使用这些技术,我们可以轻松地对单个字符串或一组字符串执行复杂的文本操作。

更新于: 2023年1月25日

845 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告