过滤文本或文件中的字符串

作者:操作系统

当我们在 Unix/Linux 下使用一定的命令从字符串或文件中读取或编辑文本时,我们常常须求过滤输出以博得感兴趣的局地。那时正则表达式就派上用场了。

哪些是正则表达式?

图片 1
正则表达式能够定义为表示若干个字符连串的字符串。它最要害的效应之一正是它同意你过滤一条命令或一个文书的输出、编辑文本或配备文件的一某些等等。

正则表达式的性情

正则表明式由以下内容组合而成:

  • 平时字符,比如空格、下划线、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

图片 2

awk 打字与印刷文件中的全体行

整合方式选拔awk

在上边包车型地铁示范中,钦赐了情势 localhost,由此 awk 将合营文件 /etc/hosts 中有 localhost 的那多少个行。

# awk '/localhost/{print}' /etc/hosts 

图片 3

awk 打字与印刷文件中相称形式的行

在 awk 格局中利用通配符 (.)

在底下的事例中,符号 (.) 将合作包涵 loc、localhost、localnet 的字符串。

此地的正则表明式的情趣是相配 l一个字符c

# awk '/l.c/{print}' /etc/hosts

图片 4

运用 awk 打字与印刷文件中相称情势的字符串

在 awk 方式中选择字符 (*)

在底下的事例中,将协作包罗 localhost、localnet、lines, capable 的字符串。

# awk '/l*c/{print}' /etc/localhost

图片 5

运用 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

结合集合 [ character(s) ] 使用 awk

以集合 [al1] 为例,awk 将相配文件 /etc/hosts 中具备满含字符 a 或 l 或 1 的字符串。

# awk '/[al1]/{print}' /etc/hosts

图片 6

利用 awk 打字与印刷文件中相配的字符

下一个事例相配以 K 或 k 初叶头,前面跟着多个 T 的字符串:

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

图片 7

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

以限制的艺术钦赐字符

awk 所能掌握的字符:

  • [0-9] 代表一个单独的数字
  • [a-z] 代表一个独门的小写字母
  • [A-Z] 代表八个单独的大写字母
  • [a-zA-Z] 代表一个单身的假名
  • [a-zA-Z 0-9] 代表二个独自的假名或数字

让大家看看上面包车型地铁事例:

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

图片 8

运用 awk 打字与印刷文件中相称的数字

在地方的例证中,文件 /etc/hosts 中的全部行都起码含有贰个独门的数字 [0-9]。

组成元字符 (^) 使用 awk

在底下的例证中,它极其全部以给定形式起首的行:

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

图片 9

使用 awk 打字与印刷与格局相称的行

结缘元字符 ($) 使用 awk

它将协作全体以给定格局结尾的行:

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

图片 10

选择 awk 打印与方式相配的字符串

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

它同意你将该转义字符前面包车型客车字符作为文字,即明白为其字面的意趣。

在底下的例子中,第二个指令打字与印刷出文件中的全部行,第一个指令中本身想匹配具备$25.00 的一行,但自己尚未选用转义字符,由此未有打字与印刷出别样内容。

其四个指令是不容争辩的,因为二个那边运用了一个转义字符以转义 $,以将其识别为 '$'(而非元字符)。

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

图片 11

构成转义字符使用 awk

总结

如上内容实际不是 awk 命令用做过滤工具的整整,上述的亲自去做均是 awk 的根基操作。在下边包车型大巴章节中,笔者将尤为介绍怎么样行使 awk 的尖端效率。

Linux系统之文本格式化工具awk http://www.linuxidc.com/Linux/2016-02/128150.htm

AWK简要介绍及运用实例 http://www.linuxidc.com/Linux/2013-12/93519.htm

Linux awk文本剖判工具 http://www.linuxidc.com/Linux/2015-12/126217.htm

Linux文本管理工科具之awk  http://www.linuxidc.com/Linux/2015-01/111437.htm

如何在Linux中使用awk命令 http://www.linuxidc.com/Linux/2014-10/107542.htm

文本剖判工具-awk  http://www.linuxidc.com/Linux/2014-12/110939.htm

应用awk格式化输出文本 http://www.linuxidc.com/Linux/2016-04/130193.htm

正文恒久更新链接地址:http://www.linuxidc.com/Linux/2016-07/133505.htm

图片 12

本文由金冠53777-金冠娱乐53777-Welcome发布,转载请注明来源

关键词: