Linux awk脚本的匹配模式
我试图计算以“de”开头和结尾的单词数,但我只能计算有de的单词数。范例 我的输入文件Linux awk脚本的匹配模式,linux,awk,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。我在代码中使用了运算符&&所以我不明白它为什么不起作用。有人能纠正我做错了什么吗?你能试试下面的吗 awk '/^[Dd][eE]/&&/[Dd][
dende
detail
DEnaDE
de.de
de
我的代码:
#!/bin/awk -f
/^de/&&/de/
结果:
dende
de.de
detail
de
我想得到dende,de.de,DenaDe,de。我在代码中使用了运算符&&所以我不明白它为什么不起作用。有人能纠正我做错了什么吗?你能试试下面的吗
awk '/^[Dd][eE]/&&/[Dd][eE]$/' Input_file
或
你能试试下面的吗
awk '/^[Dd][eE]/&&/[Dd][eE]$/' Input_file
或
对于IGNORECASE,使用GNU awk:
$ awk -v IGNORECASE=1 '/^de/ && /de$/' file
dende
DEnaDE
de.de
de
对于任何awk:
$ awk '{lc=tolower($0)} (lc ~ /^de/) && (lc ~ /de$/)' file
dende
DEnaDE
de.de
de
对于IGNORECASE,使用GNU awk:
$ awk -v IGNORECASE=1 '/^de/ && /de$/' file
dende
DEnaDE
de.de
de
对于任何awk:
$ awk '{lc=tolower($0)} (lc ~ /^de/) && (lc ~ /de$/)' file
dende
DEnaDE
de.de
de
您也可以使用
grep
$ grep -ix 'de\|de.*de' ip.txt
dende
DEnaDE
de.de
de
$ grep -cix 'de\|de.*de' ip.txt
4
忽略大小写-i
仅匹配整行x
打印总计数而不是匹配行-c
matchde\| de.*de
作为整行或以de
开始并以de
结束的匹配线de
如果不支持
\\\
,请使用grep-ixE'de | de.*de'
或grep-ixE'de(.*de)?
或grep-ix-e'de'-de.*de'
等…您也可以使用grep
$ grep -ix 'de\|de.*de' ip.txt
dende
DEnaDE
de.de
de
$ grep -cix 'de\|de.*de' ip.txt
4
忽略大小写-i
仅匹配整行x
打印总计数而不是匹配行-c
matchde\| de.*de
作为整行或以de
开始并以de
结束的匹配线de
如果
\\\
不受支持,请使用grep-ixE'de | de.*de'
或grep-ixE'de(.*de)?
或grep-ix-e'de'-e'de.*de'
等…请详细说明为什么输出中没有同样满足条件的行de
“哦,我的错了。”。假设它在那里。您需要将第二个re锚定到行的末尾。请您详细说明为什么行de
在输出中不存在也满足正确条件的行?“哦,对了,我的错。它应该在那里。你需要将第二个re锚定到线的末端。是的,它可以工作。非常感谢。/^[DdeE].[DdeE]$/和/^[DdeE]/&&/[DdeE]$/之间有区别吗?在这种情况下,您可以使用单个正则表达式。是的,它可以工作。非常感谢。/^[DdeE].[DdeE]$/和/^[DdeE]/&&/[DdeE]$/之间有区别吗?在这种情况下,您可以使用单个正则表达式。