我有以下代码
awk -v bookName="$bookName" -v authorName="$authorName" '/bookName:authorName/{print NR}' BookDB.txt
我的bookDB.txt包含带有语法的文本:
BOOKNAME:AUTHORNAME:价格
上面的代码旨在完全匹配" bookname:authorname"并打印出匹配的行号。但是,它不打印任何东西。
我在代码语法中没有发现任何错误。 任何帮助将不胜感激。
答案 0 :(得分:2)
问题在于您尝试在/ /
中使用awk变量,而这是您无法做到的。
将您的条件更改为$0 ~ bookName ":" authorName
,以搜索整个记录$0
以获取该模式。
或者,如果文件中的字段由:
分隔,您还可以使用-F:
设置输入字段分隔符,然后在前两个字段中使用字符串比较:
awk -F: -v book="$bookName" -v author="$authorName" '
$1 == book && $2 == author{print NR}' BookDB.txt