样例:
cat test.txt
aaaa
bbbb
cccc
dddd
eeee
ffff
gggg
hhhh
iiii
使用sed
使用sed过滤指定行!(以过滤eeee为例)
#匹配eeee所在行,并打印eeee后3行
sed -n '/eeee/,+3p' test.txt
打印匹配行的上一行
#x交换空间,p打印,h当前模式空间中内容覆盖至缓存区
#sed命令参数太过复杂,暂时记录这这里
sed -n '/eeee/{x;p};h' test.txt
使用grep
使用grep先确定匹配行号,再对行号前后增加!(以过滤eeee为例)
#获取eeee行号
cat test.txt |grep -nE "^eeee$"|awk -F":" '{print $1}'
#获取eeee所在行号
NUM=`cat test.txt |grep -nE "^eeee$"|awk -F":" '{print $1}'`
#eeee所在行号的上一行
NUM_1=`echo "$NUM-1"|bc`
#eeee所在行号的下一行
NUM1=`echo "$NUM+1"|bc`
sed -n "$NUM_1"p test.txt
sed -n "$NUM"p test.txt
sed -n "$NUM1"p test.txt
执行结果如下:
发表评论