本篇文章主要介绍了" 如何使用 awk 和正则表达式过滤文本或文件中的字符串",主要涉及到方面的内容,对于系统运维感兴趣的同学可以参考一下:
当我们在 Unix/Linux 下使用特定的命令从字符串或文件中读取或编辑文本时,我们经常需要过滤输出以得到感兴趣的部分。这时正则表达式就派上用场了。什么是正则...
当我们在 Unix/Linux 下使用特定的命令从字符串或文件中读取或编辑文本时,我们经常需要过滤输出以得到感兴趣的部分。这时正则表达式就派上用场了。什么是正则表达式?
正则表达式可以定义为代表若干个字符序列的字符串。它最重要的功能之一就是它允许你过滤一条命令或一个文件的输出、编辑文本或配置文件的一部分等等。正则表达式的特点
正则表达式由以下内容组合而成:普通字符,例如空格、下划线、A-Z、a-z、0-9。可以扩展为普通字符的元字符,它们包括:(.)
它匹配除了换行符外的任何单个字符。(*)
它匹配零个或多个在其之前紧挨着的字符。[ character(s) ]
它匹配任何由其中的字符/字符集指定的字符,你可以使用连字符(-)代表字符区间,例如 [a-f]、[1-5]等。^
它匹配文件中一行的开头。$
它匹配文件中一行的结尾。\
这是一个转义字符。你必须使用类似 awk 这样的文本过滤工具来过滤文本。你还可以把 awk 自身当作一个编程语言。但由于这个指南的适用范围是关于使用 awk 的,我会按照一个简单的命令行过滤工具来介绍它。awk 的一般语法如下:# awk 'script' filename
此处'script'
是一个由 awk 可以理解并应用于 filename 的命令集合。它通过读取文件中的给定行,复制该行的内容并在该行上执行脚本的方式工作。这个过程会在该文件中的所有行上重复。该脚本'script'
中内容的格式是'/pattern/ action'
,其中pattern
是一个正则表达式,而action
是当 awk 在该行中找到此模式时应当执行的动作。如何在 Linux 中使用 awk 过滤工具
在下面的例子中,我们将聚焦于之前讨论过的元字符。一个使用 awk 的简单示例:
下面的例子打印文件 /etc/hosts 中的所有行,因为没有指定任何的模式。# awk '//{print}' /etc/hosts
awk 打印文件中的所有行结合模式使用 awk