使用 awk 过滤文本或文件中的字符串(2)

awk 系列:如何使用 awk 和正则表达式过滤文本或文件中的字符串

使用 awk 打印文件中匹配的字符

下一个例子匹配以 K 或 k 开始头,后面跟着一个 T 的字符串:

# awk '/[Kk]T/{print}' /etc/hosts

使用 awk 打印文件中匹配的字符

以范围的方式指定字符

awk 所能理解的字符:

[0-9] 代表一个单独的数字

[a-z] 代表一个单独的小写字母

[A-Z] 代表一个单独的大写字母

[a-zA-Z] 代表一个单独的字母

[a-zA-Z 0-9] 代表一个单独的字母或数字

让我们看看下面的例子:

# awk '/[0-9]/{print}' /etc/hosts

awk 系列:如何使用 awk 和正则表达式过滤文本或文件中的字符串

使用 awk 打印文件中匹配的数字

在上面的例子中,文件 /etc/hosts 中的所有行都至少包含一个单独的数字 [0-9]。

结合元字符 (^) 使用 awk

在下面的例子中,它匹配所有以给定模式开头的行:

# awk '/^fe/{print}' /etc/hosts # awk '/^ff/{print}' /etc/hosts

awk 系列:如何使用 awk 和正则表达式过滤文本或文件中的字符串

使用 awk 打印与模式匹配的行

结合元字符 ($) 使用 awk

它将匹配所有以给定模式结尾的行:

# awk '/ab$/{print}' /etc/hosts # awk '/ost$/{print}' /etc/hosts # awk '/rs$/{print}' /etc/hosts

awk 系列:如何使用 awk 和正则表达式过滤文本或文件中的字符串

使用 awk 打印与模式匹配的字符串

结合转义字符 (/) 使用 awk

它允许你将该转义字符后面的字符作为文字,即理解为其字面的意思。

在下面的例子中,第一个命令打印出文件中的所有行,第二个命令中我想匹配具有 $25.00 的一行,但我并未使用转义字符,因而没有打印出任何内容。

第三个命令是正确的,因为一个这里使用了一个转义字符以转义 $,以将其识别为 '$'(而非元字符)。

# awk '//{print}' deals.txt # awk '/$25.00/{print}' deals.txt # awk '//$25.00/{print}' deals.txt

awk 系列:如何使用 awk 和正则表达式过滤文本或文件中的字符串

结合转义字符使用 awk

总结

以上内容并不是 awk 命令用做过滤工具的全部,上述的示例均是 awk 的基础操作。在下面的章节中,我将进一步介绍如何使用 awk 的高级功能。

Linux系统之文本格式化工具awk

AWK简介及使用实例

Linux awk文本分析工具

Linux文本处理工具之awk 

如何在Linux中使用awk命令

文本分析工具-awk 

使用awk格式化输出文本

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/15153.html