我试图计算以“ de ”开头和结尾的单词的数量,但是我只能让它计算带有 de 的单词的数量。例子
我的输入文件
dende
detail
DEnaDE
de.de
de
我的代码:
#!/bin/awk -f
/^de/&&/de/
结果:
dende
de.de
detail
de
我想得到 dende , de.de , DenaDe , de 。我在代码中使用了运算符&&,所以我不明白为什么它不起作用。有人可以纠正我在做错什么吗?
答案 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