首页 > 解决方案 > 在匹配模式之前打印行

问题描述

我需要在匹配的模式之前打印一行。示例:我有一个这样的文件,

文件是

test file: file1
labalanalma
kaknalknala
user: xyxyxyxyxyxyxyxyyxy
djkdhjkh:whwejewj
jwjkewhjkwe: jkdwhjdweh
etc
etc:etc
Jndwejklhewljk
pattern1: Found
wkjhwekwj
wkjhwekj

我想打印“pattern1: Found”和“user: xyxyxyxyxyxyxyxyyxy”(首先搜索“pattern1: Found”,如果它在那里,那么只有从用户开始的打印行。这是 AIX 而不是 Linux,所以grep -B在这里不起作用。

标签: awk

解决方案


只需将user匹配项放入变量中并打印:

$ awk '/user:/{u=$0}/pattern/{print $0; print u}' file
pattern1: Found
user: xyxyxyxyxyxyxyxyyxy

推荐阅读