awk不打印行号

时间:2016-08-11 15:34:29

标签: bash shell awk

我有以下代码

awk -v bookName="$bookName" -v authorName="$authorName" '/bookName:authorName/{print NR}' BookDB.txt

我的bookDB.txt包含带有语法的文本:

BOOKNAME:AUTHORNAME:价格

上面的代码旨在完全匹配" bookname:authorname"并打印出匹配的行号。但是,它不打印任何东西。

我在代码语法中没有发现任何错误。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

问题在于您尝试在/ /中使用awk变量,而这是您无法做到的。

将您的条件更改为$0 ~ bookName ":" authorName,以搜索整个记录$0以获取该模式。

或者,如果文件中的字段由:分隔,您还可以使用-F:设置输入字段分隔符,然后在前两个字段中使用字符串比较:

awk -F: -v book="$bookName" -v author="$authorName" '
    $1 == book && $2 == author{print NR}' BookDB.txt