0 1 ! abs tHfih(t) qcds bbc(u)
所以使用下面的代码,我可以找到该行
awk '
/[Tt][Hh][Ff]/ { if ($3 ~ /!/) {print "a"; exit 0}}
如何告诉awk打印整行以及包含thf" tHfih(t)"
的完整单词?打印行
awk '
/[Tt][Hh][Ff]/ { if ($3 ~ /!/) {print "the line containing the match"; exit 0}}
打印单词
awk '
/[Tt][Hh][Ff]/ { if ($3 ~ /!/) {print "the word containing the match"; exit 0}}
答案 0 :(得分:3)
这可能更简单
awk 'tolower($0) ~ /thf/ && $3=="!"'
更新
如果您不知道搜索字段的位置。您可以扫描所有字段以进行匹配。例如,对于在第三个位置上有!
的行,打印包含thf
不区分大小写的行号和单词
awk '$3=="!"{for(i=1;i<=NF;i++) if(tolower($i)~/thf/) print NR, $i}'
更新2
如果你想切换匹配的单词与行
awk -vw=1 '$3=="!"{for(i=1;i<=NF;i++) if(tolower($i)~/thf/) print w?$i:$0}' file
为全行打印设置w = 0,为单词打印设置为1。请注意,这假定行中有一个匹配,否则它将打印所有匹配(以及行模式中的多行)。