Linux|Awk 特定模式 过滤 文本

简介: Linux|Awk 特定模式 过滤 文本

以下部分中,我们将研究基于用户可以定义的特定模式过滤文本或字符串。

有时,在过滤文本时,您希望根据给定条件或使用可匹配的特定模式来指示输入文件中的某些行或字符串行。使用 Awk 执行此操作非常简单,这是 Awk 的强大功能之一,您会发现它很有帮助。

示例

让我们看一下下面的示例,假设您有一个想要购买的食品的购物清单,名为 food_prices.list。

它有以下食品及其价格清单。

cat food_prices.list 
No    Item_Name        Quantity    Price
1    Mangoes               10        $2.45
2    Apples               20        $1.50
3    Bananas               5        $0.90
4    Pineapples           10        $3.46
5    Oranges               10        $0.78
6    Tomatoes           5        $0.55
7    Onions               5            $0.45

然后,您想在价格大于 2 美元的食品上标明 (*) 符号,可以通过运行以下命令来完成:

awk '/ *$[2-9]\.[0-9][0-9] */ { print $1, $2, $3, $4, "*" ; } / *$[0-1]\.[0-9][0-9] */ { print ; }' food_prices.list

从上面的输出中,您可以看到包含食品、芒果和菠萝的行末尾有一个 (*) 符号。如果你检查一下他们的价格,它们都在 2 美元以上。

在此示例中,我们使用了两种模式:

  • 第一个: / \$[2-9].[0-9][0-9] / 获取食品价格大于 2 美元的行
  • 第二个: /\$[0-1].[0-9][0-9] */ 查找食品价格低于 2 美元的行。

文件中有四个字段,当一遇到食品价格大于 2 美元的行时,它会打印所有四个字段并在行末尾打印一个 ( * ) 符号作为标志。

第二种模式只是打印输入文件 food_prices.list 中食品价格低于 2 美元的其他行。

通过这种方式,您可以使用特定于模式的操作来过滤掉价格高于 2 美元的食品,尽管输出存在问题,但带有 (*) 符号的行的格式不会像其余行那样进行格式化。输出不够清晰。

可以通过两种方式解决它:

  1. 使用 printf 命令,这是一种漫长而无聊的方法,使用以下命令:
$ awk '/ *$[2-9]\.[0-9][0-9] */ { printf "%-10s %-10s %-10s %-10s\n", $1, $2, $3, $4 "*" ; } / *$[0-1]\.[0-9][0-9] */ { printf "%-10s %-10s %-10s %-10s\n", $1, $2, $3, $4; }' food_prices.list

  1. 使用 $0 字段。 awk 使用变量 0 来存储整个输入行。这对于解决上述问题很方便,而且简单快捷,如下所示:
$ awk '/ *$[2-9]\.[0-9][0-9] */ { print $0 "*" ; } / *$[0-1]\.[0-9][0-9] */ { print ; }' food_prices.list

总结

这些是使用特定模式的操作来过滤文本的简单方法,可以帮助使用 Awk 命令标记文件中的文本行或字符串。

未完待续,欢迎关注!

相关文章
|
2月前
|
监控 Linux 数据处理
Linux grep技巧 结合awk查询
结合 `grep` 和 `awk`,可以实现灵活、高效的文本处理和数据分析。`grep` 用于快速过滤符合条件的行,`awk` 用于进一步处理和提取数据。这种组合使用在日志分析、数据处理和系统监控等场景中尤为常见。掌握这两者的基本用法和组合技巧,可以大大提升在 Linux 环境下的工作效率。
61 7
|
6月前
|
Linux Perl
在Linux中,如何使用请用 cut 或者 awk,sed命令取出 linux 中 eth0 的 IP 地址?
在Linux中,如何使用请用 cut 或者 awk,sed命令取出 linux 中 eth0 的 IP 地址?
|
3月前
|
Linux 开发工具
linux文本管理命令
本文档介绍了Linux系统中常用的文本处理命令,包括`echo`、`cat`、`head`、`tail`、`wc`、`less`、`grep`以及重定向符号的使用方法和练习题。此外,还详细讲解了VIM编辑器的特点、工作模式、常用快捷键和高级技巧,帮助用户高效地进行文本编辑和处理。
91 4
|
4月前
|
Linux Perl
Linux awk命令使用技巧
【10月更文挑战第16天】Linux awk命令使用技巧
91 4
|
4月前
|
存储 安全 Linux
Linux文件管理命令md5sum awk
通过结合 `md5sum`和 `awk`,不仅可以高效地进行文件完整性校验,还能灵活地处理和分析校验结果,为系统管理、数据审计等工作提供强大的支持。
126 2
|
5月前
|
Linux Shell
10-10|linux命令查询 关键字在文本中出现的行数
10-10|linux命令查询 关键字在文本中出现的行数
|
6月前
|
负载均衡 监控 网络协议
在Linux中,LVS-DR模式原理是什么?
在Linux中,LVS-DR模式原理是什么?
|
6月前
|
负载均衡 算法 Linux
在Linux中,LVS-NAT模式的原理是什么?
在Linux中,LVS-NAT模式的原理是什么?
|
6月前
|
Linux Apache
在Linux中,apache有几种工作模式,分别介绍下其特点,并说明什么情况下采用不同的工作模式?
在Linux中,apache有几种工作模式,分别介绍下其特点,并说明什么情况下采用不同的工作模式?
|
6月前
|
网络协议 Linux 网络安全
在Linux中,我们都知道FTP协议有两种工作模式,它们的大概的⼀个工作流程是怎样的?
在Linux中,我们都知道FTP协议有两种工作模式,它们的大概的⼀个工作流程是怎样的?