Awk 在匹配图案之前打印行

Awk 在匹配图案之前打印行,awk,Awk,我需要在匹配的图案前打印一行。 我有一个这样的文件 文件是 test file: file1 labalanalma kaknalknala user: xyxyxyxyxyxyxyxyyxy djkdhjkh:whwejewj jwjkewhjkwe: jkdwhjdweh etc etc:etc Jndwejklhewljk pattern1: Found wkjhwekwj wkjhwekj 我想打印“pattern1:Found”和“user:xyxyxyxyxyxyxy”(如果有,首

我需要在匹配的图案前打印一行。 我有一个这样的文件

文件是

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

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

只需将
用户
匹配放在一个变量中,然后打印它:

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

只需将您的
用户
匹配项放入一个变量中并打印即可:

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

这一行就行了

$  perl -ne ' $x=$_ if /user:/; print "$_$x" if /pattern1:/ ' match.txt
pattern1: Found
user: xyxyxyxyxyxyxyxyyxy

$

这一行就行了

$  perl -ne ' $x=$_ if /user:/; print "$_$x" if /pattern1:/ ' match.txt
pattern1: Found
user: xyxyxyxyxyxyxyxyyxy

$

这可能会起作用:
sed-n'/^user:/,/pattern1:Found/{p;q}'文件
@Cyrus会起作用吗?如果用户有两行呢?或者没有
pattern1:Found
这可能会起作用:
sed-n'/^user:/,/pattern1:Found/{p;q}'文件
@Cyrus会起作用吗?如果用户有两行呢?或者没有
pattern1:Found