b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

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

电脑杂谈  发布时间:2020-06-05 12:14:16  来源:网络整理

php if正则表达式_awk if 正则表达式_awk 正则表达式

当我们在Unix / Linux下使用特定命令从字符串或文件中读取或编辑文本时,我们通常需要过滤输出以获得感兴趣的部分. 这是正则表达式派上用场的地方.

正则表达式可以定义为代表几个字符序列的字符串. 它最重要的功能之一是允许您过滤命令或文件的输出,编辑文本或配置文件的一部分,等等.

正则表达式由以下内容组成:

您必须使用awk之类的文本过滤工具来过滤文本. 您也可以将awk本身视为一种编程语言. 但是由于本指南的范围是有关使用awk的,所以我将遵循一个简单的命令行过滤工具对其进行介绍.

awk的一般语法如下:

# awk 'script' filename

“脚本”是awk理解并应用于文件名的一组命令.

它的工作方式是读取文件中的给定行,复制行的内容并在该行上执行脚本. 该过程将在文件的所有行上重复.

脚本'script'中内容的格式为'/ pattern / action',其中pattern是正则表达式,而action是awk在行中找到此模式时应执行的操作.

在下面的示例中,我们将重点讨论前面讨论的元字符.

下面的示例将打印/ etc / hosts文件中的所有行,因为未指定任何模式.

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

awk if 正则表达式_awk 正则表达式_php if正则表达式

awk打印文件中的所有行

在下面的示例中,指定了模式localhostawk if 正则表达式,因此awk将在文件/ etc / hosts中将这些行与localhost匹配.

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

awk在文件中打印与模式匹配的行

在下面的示例中,符号(. )将匹配包含loc,localhost,localnet的字符串.

这里的正则表达式表示要匹配l个字符c.

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

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

(LCTT译者注: 此处的原始作者有一个误解,谢谢微信读者的“ this is only”提示,*这里表示前一个字符重复零次或多次,因此实际上等同于*并且前面的字符是没有用的. )

在以下示例中,它将匹配包含本地主机,本地网络,行和功能的字符串. 将匹配带有c字符的字符串.

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

php if正则表达式_awk 正则表达式_awk if 正则表达式

使用awk匹配文件中的字符串

您可能还意识到(*)会尝试匹配它可能检测到的最长匹配项.

让我们看一个证明这一点的例子. 正则表达式t * t表示在以下行中匹配以t开头并以t结尾的字符串: 将匹配带有t字符的字符串:

this is tecmint, where you get the best good tutorials, how to's, guides, tecmint. 

使用模式/ t * 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选择最后一个匹配项: 以下字符串仅包含t字符:

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在文件中打印匹配的字符

awk if 正则表达式_awk 正则表达式_php if正则表达式

下一个示例匹配以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

php if正则表达式_awk 正则表达式_awk if 正则表达式

使用awk打印与图案匹配的行

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

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

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

它允许您将转义字符后的字符用作文本,这被理解为其字面意思.

在下面的示例中,第一个命令打印出文件中的所有行,第二个命令中我想将$ 25.00的行与之匹配,但是由于我没有使用转义符awk if 正则表达式,所以什么也没打印.

第三个命令是正确的,因为这里使用一个转义字符来转义$以将其识别为“ $”(不是元字符).

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

结合使用awk和转义字符

以上并非全部用作过滤工具的awk命令. 上面的示例是awk的基本操作. 在接下来的章节中,我将进一步介绍如何使用awk的高级功能. 感谢您的阅读,请在评论部分中发表您的评论.

通过:


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-234750-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...