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

awk Search for a petern,that is inside a variable, in a file that starts with that pattern

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

grep -n "^"$curdate"" ./file

现在我想用 awk 做同样的事情。我用 awk 做了这个:

awk -v pat="$input" -F ":" '[=11=]~pat{print NR") " }' ./file

但是上面的 awk 代码的问题在于它打印包含该模式的每一行,即使它在行的中间找到它,而不仅仅是在开头!!

我认为解决方案很简单,但我找不到它的语法!

能否请您尝试以下操作,因为没有样本所以无法测试,但应该可以。在此处使用正则表达式 ^ 表示我们正在寻找以每行开头的值。

awk -v pat="$input" -F ":" '[=10=]~"^"pat{print NR") " }' ./file

第二个解决方案: 使用 awkindex 选项尝试以下操作。

awk -v pat="$input" -F ":" 'index([=11=],pat)==1{print NR") " }'  Input_file

第三个解决方案:使用awksubstr方法:

awk -v pat="$input" -F ":" 'substr([=12=],1,length(pat))==var{print NR") " }' Input_file