例如,我有一个文件包含这样的内容,我需要查找给变量abc和k连续赋值得语句(连续两句)
…..
abc=13 这里是符合条件的地方
k=12
…..
abc=5 单独给abc赋值,不符合条件
…..
…..
abc=14 这个也是符合条件的地方
k=5
……
也就是说,如果我单独用两个grep来查找的话,肯定会得到很多不符合条件的结果。
如何才能达到前面我描述的需求呢? 也就是说,我希望的过滤结果像下面这样:
abc=13
k=12
abc=14
k=5
解答:
awk ‘/abc=/{s=$0;getline;if (/k=/) print s”\n”$0}’ file
sed -n ‘/abc=/{N;/k=/p}’ file
while read line
do
echo $line | grep -q k= && echo $pre | grep -q abc= && echo $pre && echo $line
pre=$line
done<file