使用 sed 查找匹配行之前的最后一行:
echo -e "aaa\nbbb\nccc\naaa\nccc\naaa\nbbb\nccc" | sed '/aaa/!d' | sed '$!d' #In which order and amount of aaa, bb, ccc, ..., nnn is optional
上面的例子效果很好。第二种方法:
echo -e "aaa\nbbb\nccc\naaa\nccc\naaa\nbbb\nccc" | sed -e '/aaa/!d' -e '$!d'
或者:
echo -e "aaa\nbbb\nccc\naaa\nccc\naaa\nbbb\nccc" | sed -e '/aaa/!d;$!d'
第二种方法不需要我工作。维基百科有人写到 sed 可以组合。我不想工作。我做错了什么并且我理解?正确的样子应该是什么样子?
最佳答案
这可能对你有用(GNU sed):
sed '/aaa/h;$!d;x' file
要捕获最后一个匹配项,您必须将其存储在保留空间中,然后在文件末尾检索它。
关于regex - sed:在匹配之前显示行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16829457/