流编辑器(sed)被称为一个强大的编辑器,因为它支持广泛的功能,如替代、编辑、删除和更多。虽然流编辑器有一个长长的字符列表,为自动管理文件提供帮助:这些字符被包含在一组类似的字符中,称为字符类;这些类包含相似家族的字符。
例如,在使用sed时,数字是通过[[:digit:]]类访问的,而字母数字字符则存储在名为[[:alnum:]]的类中。同样地,所有的字符都属于一些特定的字符类;知道了这些类的重要性,我们今天的指南主要是提供对sed中字符类的深入了解。
所以,让我们开始这个教程。
sed中的字符类
本节包含了sed中用于管理文本文件的字符类。
字母表类:sed中的字母表是通过 "字母表类"访问的;人们可以通过调用字母表类来管理文本文件:用来引用这个类的关键词写在下面。
[[:alpha:]]
例如,我们想从 "test.txt"中删除所有包含字母的行;因此,为此你必须使用这个类,如下面的命令所示。
注意:仔细使用该类的关键字,否则命令将无法执行。

此外,你还可以执行其他操作,如替换、打印,就像我们在上述命令中执行的删除一样。
字母数字类:该类包含字母数字字符,你可以访问所有字母和数字。
[[:alnum:]]
下面的例子将帮助你理解Ubuntu中这个类的基本用法:从文件 "test.txt"中,我们通过下面的命令显示所有包含字母数字字符的单词。
$ sed -n ‘/[[:alnum:]]/p’ test.txt

小写字母类:这个sed类用于管理文本文件中的小写字母;你可以通过使用这个类来替代、删除、打印小写字母;这个类的关键词如下所示。
[[:lower:]]
例如,如果你想打印包含小写字母的行,那么下面写的命令将帮助你做到这一点。
$ sed -n ‘/[[:lower:]]/p’ test.txt

大写字母类: 该类sed包含大写字母;用于处理大写字母类的关键字写在下面。
[[:upper:]]
你可以使用这个类来对所有大写字母进行定向修改;例如,下面给出的命令将删除所有包含大写字母的行。
$ sed ‘/[[:upper:]]/d’ test.txt

空白字符类:由空格键或Tab键产生的空白位于该类中;人们可以使用该字符类替代、删除文本文件中的所有空白,用于处理该类的关键词显示如下。
[[:blank:]]
例如,我们想用字母 "YYY"代替文本文件中的空白;因此,下面提到的命令将有助于用 "YYY"代替空白。
$ sed ‘s/[[:blank:]]/YYY/g’ new.txt

空间字符类:该类与空白类具有相同的功能,但它涵盖了比它更多的功能。空间字符类所提供的功能是空格、空白,并支持垂直制表符和换行。
用来处理这个类的关键词如下所示。
[[:space:]]
下面的命令将删除 "test.txt"中所有包含空格类字符的行。
$ sed ‘/[[:space:]]/d’ test.txt

数字字符类:这个字符类用于处理和管理 sed 命令行工具中的数字;此外,你可以在整个文本文件中执行与数字有关的集体修改。用来处理这个类的关键词如下。
[[:digit:]]
例如,下面的命令将打印 "test.txt"中所有包含数字的行。
$ sed -n ‘/[[:digit:]]/p’ test.txt

十六进制字符类: 该类在sed中包含十六进制字符**(0-9,A-F**);用于引用这些字符的关键字如下。
[[:xdigit:]]
下面提到的命令将打印 "test.txt"中含有十六进制字符的行。
$ sed -n ‘/[[:xdigit:]]/p’ test.txt

打印字符类:该类包含可以在屏幕上打印的字符;它还包括空格:该类使用的关键字是。
[[:print:]]
例如,下面写的命令将打印所有甚至包含一个字符的行。
$ sed -n ‘/[[:print:]]/p’ new.txt

控制字符类:这类字符包括文本文件中的不可打印的字符;这类字符的关键词写在下面。
[[:cntrl:]]
不可打印的字符类包括空格、制表符、换行、换页等。
下面写的命令将删除名为 "new.txt"的文本文件中包含控制字符的行。
$ sed -n ‘/[[:cntrl:]]/d’ new.txt

图形字符类:该类字符包含可打印的字符,其作用与[[:print:]]相同;图形类关键词写在这里。
[[:graph:]]
注意:图形字符包括所有可以被编辑、打印的字符,以人类可读的方式。例如,字母、数字、十六进制等类别的字符都可以称为图形字符。
现在让我们来看看这个例子,下面的命令将删除 "newfile.txt"中所有存在图形字符的行。
$ sed ‘/[[:graph:]]/d’ newfile.txt

结论
Ubuntu中著名的编辑器之一sed提供了管理文本文件的便利,在这方面的核心帮助是由字符提供的。此外,还有一些包含相似字符的字符类,在sed中被广泛使用。在这个详细的指南中,我们针对sed中使用的字符类,简要地解释了它们在命令行中的用法。这些类可以用来在文本文件中进行一些操作;比如如果你想管理文件中的数字,你必须使用数字类,同样,所有其他的类在需要它们各自的功能时被调用。此外,我们还描述了字符类在sed的基本操作方面的用法,如替换、删除和打印。