当我们在 unix/linux 当我们使用特定的命令从字符串或文件中读取或编辑文本时,我们经常需要过滤输出以获得感兴趣的部分。此时,正则表达式将派上用场。
正则表达式可以定义为代表多个字符序列的字符串。它最重要的功能之一是允许您过滤命令或文件的输出、编辑文本或配置文件的一部分等。
您必须使用类似的方法 awk 这种文本过滤工具过滤文本。您还可以使用它 awk 作为编程语言自己使用。但是因为这个指南的适用范围是关于使用的 awk 是的,我会根据一个简单的命令行过滤工具来介绍它。
# awk 'script' filename
此处 'script' 是一个由 awk 可理解并应用于 filename 命令集合。
它通过阅读文件中的给定行来复制银行的内容,并在银行上执行脚本。此过程将在文件中的所有行中重复。
该脚本 'script' 内容的格式是 '/pattern/ action',其中 pattern 它是一种正则表达式,但是 action 是当 awk 在银行中找到该模式时应执行的动作。
在下面的例子中,我们将专注于之前讨论过的元字符。
打印文件的例子如下 /etc/hosts 由于没有指定任何模式,中间的所有行都没有。
# awk '//{print}' /etc/hosts
awk 打印文件中的所有行
在下面的示例中,指定了模式 localhost,因此 awk 将匹配文件 /etc/hosts 中有 localhost 的那些行。
# awk '/localhost/{print}' /etc/hosts
awk 打印文件中匹配模式的行
在下面的例子中,符号 (.) 将匹配包含 loc、localhost、localnet 的字符串。
这里的正则表达式意味着匹配 l字符c。
# awk '/l.c/{print}' /etc/hosts
使用 awk 打印文件中匹配模式的字符串
匹配包含在下面的例子中 localhost、localnet、lines, capable 的字符串。
# awk '/l*c/{print}' /etc/localhost
使用 awk 匹配文件中的字符串
你也可能意识到 (*) 将尝试匹配它可能检测到的最长匹配。
让我们来看看可以证明这一点的例子,正则表达式 t*t 意思是在下面的行中匹配 t 开始和 t 结束字符串:
this is tecmint, where you get the best good tutorials, how to's, guides, tecmint.
当您使用模式时 /t*t/ 可能的结果如下:
this is t this is tecmint this is tecmint, where you get t this is tecmint, where you get the best good t this is tecmint, where you get the best good tutorials, how t this is tecmint, where you get the best good tutorials, how tos, guides, t this is tecmint, where you get the best good tutorials, how tos, guides, tecmint
在 /t*t/ 中的通配符 (*) 将使得 awk 最后一项选择匹配:
this is tecmint, where you get the best good tutorials, how to's, guides, tecmint
以集合 [al1] 为例,awk 将匹配文件 /etc/hosts 所有这些都包含字符 a 或 l 或 1 的字符串。
# awk /[al1]/{print}' /etc/hosts
使用 awk 打印文件中匹配的字符
匹配下一个例子 K 或 k 开始头,后面跟着一个 T 的字符串:
# awk '/[Kk]T/{print}' /etc/hosts
使用 awk 打印文件中匹配的字符
awk 可以理解的字符:
让我们看看下面的例子:
# awk '/[0-9]/{print}' /etc/hosts
使用 awk 打印文件中匹配的数字
在上面的例子中,文件 /etc/hosts 所有行至少包含一个单独的数字 [0-9]。
在下面的例子中,它匹配了以给定模式开始的所有行:
# awk '/^fe/{print}' /etc/hosts # awk '/^ff/{print}' /etc/hosts
使用 awk 打印与模式相匹配的行
它将匹配以给定模式结束的所有行:
# awk '/ab$/{print}' /etc/hosts # awk '/ost$/{print}' /etc/hosts # awk '/rs$/{print}' /etc/hosts
使用 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
视频复制粘贴失败,揭秘下载难题背后的真相!
服务器客服热线,安全认证,放心拨打!
Java框架与云计算数据库的集成-java教程
一键切换,桌面之间,瞬间穿梭!
Java教程探索Java框架中的新设计模式
海外VPS首选,稳定高效,全球信赖之选
Java框架与云计算数据库的集成-java教程
Java教程探索Java框架中的新设计模式
7月8日进店!华为鸿蒙智行享受S9汽车正式亮相-IT行业
中国首张大型无人直升机特殊适航证诞生,华谊航空 HY600 完成评估-IT行业
马斯克霸气地喊道:比尔?盖茨等特斯拉空头头寸将被“消灭”——IT行业
如何为项目选择合适的golang框架?-Golang
探索Golang框架性能优化的先进技能-Golang
使用golang框架构建分布式系统-Golang
C 框架适用于大规模开发项目吗?-C
实现golang框架中的依赖注入-Golang
使用golang框架来提高应用程序性能的指南-Golang
Golang并发编程的实践指南-Golang