awk在匹配之前打印匹配的行和行

Sud*_*eep 6 regex awk

以下是我尝试使用awk做的事情.在匹配和打印之前获取与正则表达式匹配的行和行.我可以得到与正则表达式匹配的行,但不是之前的行:

awk '{if ($0!~/^CGCGGCTGCTGG/) print $0}' 
Run Code Online (Sandbox Code Playgroud)

mar*_*rco 13

在这种情况下,您可以使用grep轻松解决它:

grep -B1 foo file
Run Code Online (Sandbox Code Playgroud)

但是,如果你需要使用awk:

awk '/foo/{if (a && a !~ /foo/) print a; print} {a=$0}' file
Run Code Online (Sandbox Code Playgroud)

  • 并非所有grep(1)都有"-B"选项.这是非标准的. (3认同)