awk在以该模式开头的文件中搜索变量内部的petern

awk在以该模式开头的文件中搜索变量内部的petern,awk,file-search,Awk,File Search,我想搜索特定的模式,我在一个变量中,在一个文件中,该模式必须是打印行的起点。 我在这里与grep一起完成了: grep -n "^"$curdate"" ./file 现在我想用awk做同样的事情。我已经用awk完成了这项工作: awk -v pat="$input" -F ":" '$0~pat{print NR") "$2 }' ./file 虽然上面的AWK代码的问题是它打印出包含模式的每一行,即使它发现它在行的中间,而不仅仅是在开始的时候!!p> 我认为解决方案很简单,但我找不到语法

我想搜索特定的模式,我在一个变量中,在一个文件中,该模式必须是打印行的起点。 我在这里与grep一起完成了:

grep -n "^"$curdate"" ./file
现在我想用awk做同样的事情。我已经用awk完成了这项工作:

awk -v pat="$input" -F ":" '$0~pat{print NR") "$2 }' ./file
虽然上面的AWK代码的问题是它打印出包含模式的每一行,即使它发现它在行的中间,而不仅仅是在开始的时候!!p>
我认为解决方案很简单,但我找不到语法

由于没有样品,所以无法测试,但应该可以使用,请尝试以下内容。在这里使用regexp^,这表示我们正在查找每行中以开头的值

awk -v pat="$input" -F ":" '$0~"^"pat{print NR") "$2 }' ./file
第二种解决方案:使用awk的索引选项尝试以下操作

awk -v pat="$input" -F ":" 'index($0,pat)==1{print NR") "$2 }'  Input_file
第三种解决方案:使用awk的substr方法:


我已经完成了第一个解决方案,而且非常有效lot@Psz_13,您的欢迎,很高兴它帮助了您,我又添加了两个解决方案,以防它们也能帮助您,干杯,快乐学习等等。
awk -v pat="$input" -F ":" 'substr($0,1,length(pat))==var{print NR") "$2 }' Input_file