$ 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 在这个例子中,我们使用了两种模式:
- 第一:
/ *\$[2-9]\.[0-9][0-9] */
获取具有行食品价格高于$ 2和 - 第二:
/*\$[0-1]\.[0-9][0-9] */
查找与食品项目的价格低于$ 2行。
(*)
在该行作为一个标志的结束标志。 第二个模式简单地打印其他线路与食品价格,因为他们出现在输入文件不到
2 $,food_prices.list。 这样,您就可以使用模式的具体行动,以筛选出的价格高于
$ 2食品项目,虽然有与输出一个问题,即有行
(*)
标志未被格式化,如同使输出线的其余部分不够清楚。 我们看到了同样的问题
awk的系列的第二部分 ,但我们可以通过两种方式解决:
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
使用Awk和Printf过滤和打印项目
$ awk '/ *\$[2-9]\.[0-9][0-9] */ { print $0 "*" ; } / *\$[0-1]\.[0-9][0-9] */ { print ; }' food_prices.list
使用Awk和变量过滤和打印项目