我想在第2行中的模式匹配时打印第1行。例如 -
这是第1行没有模式 这是第2行随机模式
当我对“随机”做grep时,我想打印“这是没有图案的第1行”? grep有什么简单的技巧吗?
答案 0 :(得分:1)
只需使用awk:
awk '/random/{print prev} {prev=$0}' file
除了不要求搜索regexp(random
)两次之外,你会发现它在某些情况下比grep | grep -v
解决方案更直观/更正确,例如:
$ cat file
this is to be printed
this is also to be printed but contains random 1
this is not to be printed and contains random 2
$ awk '/random/{print prev} {prev=$0}' file
this is to be printed
this is also to be printed but contains random 1
$ grep -B1 "random" file | grep -v "random"
this is to be printed
答案 1 :(得分:0)
将 grep 与上下文之前的一起使用,以找到您的匹配项以及之前的行:
grep -B1 "random" file
然后使用反转的 grep 来抑制包含匹配项的行,这样您只剩下前面的行:
grep -B1 "random" file | grep -v "random"