我想在文件中找到所有出现的INPUT,JUST INPUT。我有以下内容,但它通过INPUT *
找到了所有内容awk '{for(i=1;i<=NF;i++){if($i~/^INPUT/){print $i}}}'
我想支持这个,所以如果我有INPUT *或INPUT?或INPUT。 (任何正则表达式)而不是上面的INPUT,它应该适用于此。
任何人都知道如何解决上述问题吗?谢谢。
我正在尝试使用$ INPUT
在perl脚本中执行以下操作`awk '{for(i=1;i<=NF;i++){if($i~/^$INPUT$/){print $i}}}' $file`
但是我无法让任何想法发挥作用?
答案 0 :(得分:1)
如果你想使用反引号,那么逃避所有美元符号(假设你有某些东西,例如$INPUT
中的'INPUT')::
`awk '{for(i=1;i<=NF;i++){if(\$i~/^$INPUT\$/){print \$i}}}' $file | wc -l`;
awk也可以计算你的匹配数量(这个数字每行计算一次):
`awk '/\y$INPUT\y/{s++} END{print s}' $file`;
并使用原生Perl,建议使用:
my $cnt;
open my $f, "<", "input" or die("$!");
while (<$f>) {
$cnt++ while /\bINPUT\b/g;
}
close $f;
print $cnt;
答案 1 :(得分:0)
您使用的正则表达式锚定在开头^
但不是结束$
。尝试:
awk '{for(i=1;i<=NF;i++){if($i~/^INPUT$/){print $i}}}'
如果您想在字段中的任何位置匹配INPUT,请尝试:
awk '{for(i=1;i<=NF;i++){if($i~/INPUT/){print $i}}}'