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
第二个解决方案: 使用 awk
的 index
选项尝试以下操作。
awk -v pat="$input" -F ":" 'index([=11=],pat)==1{print NR") " }' Input_file
第三个解决方案:使用awk
的substr
方法:
awk -v pat="$input" -F ":" 'substr([=12=],1,length(pat))==var{print NR") " }' Input_file
我想搜索特定的模式,我在一个变量中,在一个文件中,并且该模式必须是要打印该行的行的起点。 我在这里用 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
第二个解决方案: 使用 awk
的 index
选项尝试以下操作。
awk -v pat="$input" -F ":" 'index([=11=],pat)==1{print NR") " }' Input_file
第三个解决方案:使用awk
的substr
方法:
awk -v pat="$input" -F ":" 'substr([=12=],1,length(pat))==var{print NR") " }' Input_file