与两个特定单词的行相匹配

  • 本文关键字:单词 两个 bash awk
  • 更新时间 :
  • 英文 :


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

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

现在,需要用"呼叫"one_answers"鲍勃"提取最后一行。我尝试了 -

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

so值:应打印3(第三次记录)。但这没有打印。请建议。我必须使用尴尬。

with gnu awk for Word定界符,以避免"鲍勃"错误地匹配" 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的外壳变量中,则使用awk -v var="$var" ...

相关内容

  • 没有找到相关文章

最新更新