如何使用Regex的Sed命令

488 阅读3分钟

sed命令有一长串支持的操作,可以用来减轻编辑文本文件的过程。它允许用户应用通常在编程语言中使用的表达式;其中一个核心支持的表达式是正则表达式(regex)。

正则表达式用于管理文本文件内的文本,在正则表达式的帮助下,一个由字符串组成的模式,然后这些模式被用来匹配或定位文本。regex广泛用于Python、Perl、Java等编程语言,它也可用于grep等命令行程序和sed等几个文本编辑器。

尽管简单的搜索和排序可以用sed命令来完成,但使用regex和sed可以在文本文件中进行高级的匹配。regex在使用的字符方向上起作用;这些字符指导sed命令执行定向任务。在这篇文章中,我们将演示regex在sed命令中的使用,随后的例子将展示regex的应用。

如何在 sed 中使用 regex

本节是写作的核心部分,包含了sed背景下正则表达式的详细解释:让我们开始吧

匹配单词

如果你想找到完全匹配的字,那么你必须指定与该字匹配的确切字符。例如,我们有一个包含笔记本电脑制造商列表的文本文件,其名称为 "laptops.txt"。

让我们使用下面提到的命令来获取该文件的内容。

$ cat laptops.txt

使用下面的命令将有助于获得 "ACER"一词。

$ sed -n '/ACER/p' laptops.txt

匹配所有以特定字符开始的单词

这个regex支持包含多个动作,在本节中进行了描述。

如果你想搜索和匹配以特定字符开始和结束的单词,那么你必须在字符之间使用 "*"符号来实现;但要注意的是,"*"符号会打印出以单个或多个 "A"开头但以单个 "R"开头的单词。例如,下面的命令将打印所有以单个或多个 "A"开头但以单个 "R"结尾的单词。

$ sed -n '/A*R/p' laptops.txt


匹配以特定字符结尾或只包含特定字符的词:下面写的命令将显示以字符 "P"或准确的词 "HP"的词。

$ sed -n '/H\?P/p' laptops.txt

匹配带有特定字符的词

人们注意到,在sed命令的帮助下,你可以得到包含任何字符的单词。例如,下面提到的命令将找到包含这些字符**"A"、"H "或 "D "之一的词。**

$ sed -n '/[AHD]/p' laptops.txt

匹配字符串

你可以使用带有正则表达式的sed命令来打印字符串;你可以打印所有的字符串,也可以通过使用该字符串的起始或结束字符来针对某个特定的字符串。

我们使用 "file.txt"作为本节的一个例子;这个文件包含以下内容。

$ cat file.txt

例如,如果你想打印所有的字符串;在这方面,以下命令将帮助你。

$ sed -n '/.\+/p' file.txt

如果你想获得所有以字符 "a"开头的字符串,那么你必须使用胡萝卜符号**(^**)来表示字符串的起始字符。

下面提到的命令可以打印以"@"开头的字符串。

$ sed -n '^@' file.txt

此外,如果你想只得到以某个特定字符结尾的字符串,那么你必须使用"$"和该字符。例如,这里写的命令将打印以 "#"结尾的字符串。

$ sed -n '/#$/p' file.txt

匹配空行

sed命令的regex支持允许用户使用"/^$/"来打印/删除空行;下面的命令将打印 "laptops.txt"文件中的空行。

$ sed -n '/^$/p' laptops.txt

或者你也可以通过将上述命令中的 "p"替换为 "d"来删除,如下所示。

$ sed -n '/^$/d' laptops.txt

匹配字母大小写

sed命令允许用户用特定的字母大小写来操作单词。

例如,你可以通过使用sed命令打印、删除、替换字母大小写的单词。

在这个例子中使用了一个名为 "test.txt"的文本文件,这个文件的内容通过使用以下命令打印出来。

$ cat test.txt

匹配小写字母

下面的命令将打印所有包含小写字母的单词。

$ sed -n '/[a-z]/p' test.txt

匹配大写字母

或者你可以通过在终端发出以下命令来打印包含大写字母的词。

$ sed -n '/[A-Z]/p' test.txt

总结

正则表达式(regex)被称为;任何用于从任何文本文件中获得匹配的单词或字符序列。它们为几种编程语言以及Ubuntu命令或程序提供了广泛的支持。除了这个词组,Ubuntu还提供了广泛的命令支持,以缓解执行繁琐任务的过程。Ubuntu的sed命令行工具允许你非常容易地执行一些繁琐的任务,对文本文件进行一些操作。我们编写了这篇指南,以阐明将正则表达式与sed结合起来的好处;这种联合行动提供了高级别的匹配和在文本文件中搜索。正则表达式需要用于匹配的字符的帮助,以执行各种任务,如删除、打印、替换或管理文本文件内的文本。