具有两个特定单词

时间:2015-05-16 13:40:53

标签: bash awk

使用AWK,想要打印包含两个特定单词的最后一行。 假设我有log.txt,其中包含以下日志

log1|Amy|Call to Bob for Food
log2|Jaz|Call to Mary for Toy and Cookies
log3|Ron|Call to Jerry then Bob for Book
log4|Amy|Message to John for Cycle

现在,需要使用“Call”和“Bob”提取最后一行。 我试过 -

#!/bin/bash
log="log.txt"
var="Bob"
check=$(awk -F'|' '$3 ~ "/Call.*$var/" {print NR}' $log | tail -1)
echo "Value:$check"

所以价值:应打印3(第3条记录)。 但它没有打印出来。请建议。我必须使用awk。

1 个答案:

答案 0 :(得分:2)

使用GNU awk进行单词分隔符以避免“Bob”错误地匹配“Bobbing”:

$ awk -v var="Bob" -F'|' '$3 ~ "Call.*\\<" var "\\>"{nr=NR; rec=$0} END{if (nr) print nr, rec}' file
3 log3|Ron|Call to Jerry then Bob for Book

http://cfajohnson.com/shell/cus-faq-2.html#Q24。如果Bob已保存在名为var的shell变量中,请使用awk -v var="$var" ...