awk脚本的匹配模式

时间:2018-08-17 03:20:39

标签: linux awk

我试图计算以“ de ”开头和结尾的单词的数量,但是我只能让它计算带有 de 的单词的数量。例子

我的输入文件

dende
detail
DEnaDE
de.de
de

我的代码:

#!/bin/awk -f
/^de/&&/de/

结果:

dende
de.de
detail
de

我想得到 dende de.de DenaDe de 。我在代码中使用了运算符&&,所以我不明白为什么它不起作用。有人可以纠正我在做错什么吗?

3 个答案:

答案 0 :(得分:2)

使用GNU awk进行IGNORECASE:

transition

任何awk:

$ awk -v IGNORECASE=1 '/^de/ && /de$/' file
dende
DEnaDE
de.de
de

答案 1 :(得分:2)

您还可以使用grep

$ grep -ix 'de\|de.*de' ip.txt
dende
DEnaDE
de.de
de

$ grep -cix 'de\|de.*de' ip.txt
4
  • -i忽略大小写
  • x仅匹配整行
  • -c打印总计数而不是匹配行
  • de\|de.*de匹配de作为整行匹配行,以de开始并以de
  • 结尾

如果不支持\|,请使用grep -ixE 'de|de.*de'grep -ixE 'de(.*de)?'grep -ix -e 'de' -e 'de.*de',依此类推...

答案 2 :(得分:1)

请您尝试以下。

awk '/^[Dd][eE]/&&/[Dd][eE]$/' Input_file

OR

awk '/^[Dd][eE]/&&/[Dd][eE]$/{count++}  END{print count}'  Input_file