Bash awk不打印行号
我有以下代码Bash awk不打印行号,bash,shell,awk,Bash,Shell,Awk,我有以下代码 awk -v bookName="$bookName" -v authorName="$authorName" '/bookName:authorName/{print NR}' BookDB.txt My bookDB.txt包含语法如下所示的文本: 书名:作者姓名:价格 上面的代码旨在精确匹配“bookname:authorname”,并打印出匹配的行号。然而,它并没有打印出任何内容 我没有发现代码语法有任何错误。 任何帮助都将不胜感激。问题是您试图在/中使用awk变量,但您
awk -v bookName="$bookName" -v authorName="$authorName" '/bookName:authorName/{print NR}' BookDB.txt
My bookDB.txt包含语法如下所示的文本:
书名:作者姓名:价格
上面的代码旨在精确匹配“bookname:authorname”,并打印出匹配的行号。然而,它并没有打印出任何内容
我没有发现代码语法有任何错误。
任何帮助都将不胜感激。问题是您试图在
/
中使用awk变量,但您不能这样做
将您的条件更改为$0~bookName:“authorName
,以在整个记录$0
中搜索模式
或者,如果文件中的字段由:
分隔,也可以使用-F:
设置输入字段分隔符,然后对前两个字段使用字符串比较:
awk -F: -v book="$bookName" -v author="$authorName" '
$1 == book && $2 == author{print NR}' BookDB.txt
问题是您试图在
/
中使用awk变量,但您无法做到这一点
将您的条件更改为$0~bookName:“authorName
,以在整个记录$0
中搜索模式
或者,如果文件中的字段由:
分隔,也可以使用-F:
设置输入字段分隔符,然后对前两个字段使用字符串比较:
awk -F: -v book="$bookName" -v author="$authorName" '
$1 == book && $2 == author{print NR}' BookDB.txt